Masatake Iwasaki
masat****@cj9*****
2009年 7月 28日 (火) 00:21:41 JST
岩崎です。こんにちは。 > [実現したいこと] > > 複数のフィールド(例えば 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