[Ludia-users 156] Re: pgs2getscoreで取得した値がマイナスになります。

Back to archive index

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自
> > 体はサブクエリ内の単一テーブルに対して行っています。
> >
> > どうすれば、正常な値をとれるようになるでしょうか?
> >
> > ご教授いただければ幸いです。
> > よろしくお願いします。
> >




Ludia-users メーリングリストの案内
Back to archive index