Tomomi Yamamoto
yamam****@gmail*****
2007年 12月 18日 (火) 13:25:07 JST
山本です。 すいません、当方の環境ですが、このような感じです。 ■環境 (1) CentOS 5 Ludia 1.4.0 (mecab-0.96、mecab-ipadic 2.7.0-20070801、mecab-java 0.96、mecab-jumandic 5.1-20070304、Senna 1.0.9) PostgreSQL 8.1.9 (2) MacOS 10.5 Ludia 1.4.0 (mecab-0.96、mecab-ipadic 2.7.0-20070801、mecab-java 0.96、mecab-jumandic 5.1-20070304、Senna 1.0.9) PostgreSQL 8.2.3 ■設定 [postgres.conf] custom_variable_classes = 'ludia' ludia.max_n_sort_result = 100000 ludia.enable_seqscan = on ludia.seqscan_flags = 1 ludia.sen_index_flags = 19 ludia.max_n_index_cache = 16 ludia.initial_n_segments = 1024 ■DB table1(構成) ・link_id int4 ・site_id int4 ・url varchar(255) ・title text ・description text ・fulltxt text ・indexdate date ・size real ・md5sum varchar(32) ・clickcnt int4 table2(構成) ・site_id int4 ・link_id int4 ・word text ・score int4 table3(構成) ・site_id int4 ・link_id int4 ・tag_id int4 ・id int4 ・tagword text table1(DATA) ・link_id = 6407 ・site_id = 5 ・url = "http://www.testtest.com/event001/03-d.html" ・title = "EVENT REPORT" ・description = "" ・fulltxt = "イベントリポート" ・indexdate = "2007-12-18" ・size = 4.16 ・md5sum = "b6ec4029f6a24fcd41875c266edc43e2" ・clickcnt = 0 table2(DATA) table3(DATA) ・site_id = 5 ・link_id = 6422 ・tag_id = 6 ・id = 0 ・tagword = "EVENT REPORT" table1(INDEX) ・fulltextb table2 ・fulltextb ■現象 select a.link_id , a.url , a.title , a.description , fulltxt , a.size , TO_CHAR(a.indexdate,'YYYY年MM月DD日') as indexdate , a.level , ((case when b.score is null then 1 else b.score end)+a.clickcnt) as score , (case when b.score is null then 1 else b.score end) as score_o , a.ludiascore from ( select link_id , site_id , url , title , description , fulltxt , indexdate , size , md5sum , visible , level , clickcnt , delflg , parenturl , pgs2getscore(ctid, 'idx_ngram_table1') as ludiascore from table1 a where ( ((a.fulltxt @@ 'イベント') or (a.title @@ 'イベント') or (a.description @@ 'イベント')) or a.link_id in ( select a.link_id from table2 a where (a.word @@ 'イベント') and a.site_id=5 ) ) and a.delflg=0 and a.site_id=5 ) a left join ( select a.link_id , sum(a.score) as score from ( select 'tag' as f , a.link_id , sum((case when b.score is null then 1 else b.score end)) as score from table3 a left join usr_1_tags b on a.tag_id=b.tag_id where (a.tagword @@ 'イベント') and a.site_id=b.site_id and a.site_id=5 group by a.link_id union select 'score' as f , a.link_id , sum((case when a.score is null then 1 else a.score end)) as score from table2 a where (a.word @@ 'イベント') and a.site_id=5 group by a.link_id ) a group by a.link_id ) b on a.link_id=b.link_id order by (case when b.score is null then 1 else b.score end)+a.clickcnt desc , (case when b.score is null then 1 else b.score end) desc , a.clickcnt desc , a.level asc , a.indexdate desc , a.size des と、実行すると、 「ludiascore」が「-21」や「-14」などの数値で戻ってきます。 データによっては+の数値で戻ってくることもあります。 07/12/18 に kousa****@nttda*****<kousa****@nttda*****> さんは書きました: > 幸坂です。こんにちは。 > > もうちょっと詳細な情報を頂けますか? > > http://lists.sourceforge.jp/mailman/archives/ludia-users/2007-December/00014 > 1.html > こんな感じで書いてもらえると助かります。 > EXPLAINの結果が特に重要なので、忘れずに書いてください。 > > > -----Original Message----- > > From: ludia****@lists***** > > [mailto:ludia****@lists*****] On Behalf > > Of Tomomi Yamamoto > > Sent: Monday, December 17, 2007 6:58 PM > > To: ludia****@lists***** > > Subject: [Ludia-users 154]pgs2getscoreで取得した値がマイナスになります。 > > > > 検索時にpgs2getscoreで取得した値をソートと表示する数値に利用しようとしてい > るのですが、戻ってくる値が必ずマイナス > > の値になってしまいます。 > > > > どうも、検索単語を多く含んでいるレコードほどマイナスの数値が大きく、プラス > マイナスが逆転している感じもうけます。 > > > > SQLでは単一のテーブルを使わず、いくつかのサブクエリを組み合わせてデータを > 取得しているのですが、pgs2getscore自 > > 体はサブクエリ内の単一テーブルに対して行っています。 > > > > どうすれば、正常な値をとれるようになるでしょうか? > > > > ご教授いただければ幸いです。 > > よろしくお願いします。 > >