Junya Ohori
oohor****@jp*****
2009年 7月 28日 (火) 20:44:45 JST
大堀です。 岩崎さん、アドバイスありがとうございます。 配列インデックスを使って、3つのカラムによるインデックスを 作成し、Senna の *D演算子により AND 条件を指定した SQLを発行する ようにしたところ、重みを考慮したスコアが得られるようになりました。 スコアは、フィールドごとの "キーワードの出現回数 x フィールドの重み" の和となっているようですので、f1 にヒットしたものが確実に上位に くるよう、重みを調整したいと思います どうも、ありがとうございました。 > 岩崎です。こんにちは。 > > >> [実現したいこと] >> >> 複数のフィールド(例えば 3つ )をもつ文書に対して全文検索を実行し、 >> その結果をフィールドの重みを考慮してランキング表示したいのです。 > > Ludiaのスコア取得関数の仕様上、 > 複数の全文検索インデックスが使われるスキャンでは、 > 意図されるようなスコアは取得できません。 > (得られるのは一番最後に実行された全文検索の結果 > に関するスコアのみです。) > > なので、 > >> ・テーブル table1 の複数のカラム (f1,f2,f3) にデータを格納 >> し、それぞれに全文検索インデックス (i1,i2,i3) を 張っておく > > のではなく、1つでこの3つのカラムをカバーするような > インデックスを作成する必要があります。 > そのための機能としてマルチカラムインデックスがあるのですが、 > マルチカラムインデックスだと列に重みを持たすことができないので、 > 代わりに以下にある例のような感じで > 配列インデックスを利用してみてはどうでしょうか。 > > http://ludia.sourceforge.jp/cgi-bin/moin.cgi/LudiaReadmeAdvanced#id3 > > また、AND条件を使う際はSQLのANDではなく、 > Sennaの検索クエリで条件を指定するようにしてみてください。 > > http://qwik.jp/senna/query.html > > _______________________________________________ > Ludia-users mailing list > Ludia****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > >