TOP業務システム> 検索スコアの取得
Ludia
高性能なオープンソース全文検索システム「Ludia」

第5回:Ludiaの多彩な検索機能の秘密

著者:NTTデータ  岩崎 正剛   2007/2/13
前のページ  1  2  3  4
検索スコアの取得

   検索にヒットするたくさんのデータから、より求めている内容に適合すると思われるデータを選ぶ際に利用できるのが、検索スコアです。検索スコアはpgs2getscore関数で取得することができます。
# SELECT txt, pgs2getscore(ctid, 'idx') FROM tbl
           WHERE txt @@ 'こんにちは さようなら';
          txt           | pgs2getscore
------------------------+--------------
こんにちは、さようなら |           10
こんにちは             |            5
さようなら             |            5
(3 rows)

   関数の引数にはctidとインデックス名を指定します。この例を見るとわかるように、検索キーワードが出現する回数が多いデータほど、検索スコアが高くなります。また、部分一致検索でヒットした場合には、少し低めのスコアが与えられます。

# SELECT txt, pgs2getscore(ctid, 'idx') FROM tbl
           WHERE txt @@ '*E3 こんに OR さようなら';
          txt           | pgs2getscore
------------------------+--------------
さようなら             |            5
こんにちは、さようなら |            5
こんにちは             |            3
(3 rows)

   Ludiaはctidをスコア順(の降順)にソートした上で返すため、WHERE句で指定する条件が1つの全文検索条件のみの簡単な場合であれば、目的とするデータが得られるはずです。しかし、他の条件と組み合わせたりした場合には、最終的に得られる結果が検索スコア順になっているとは限らないため、明示的にソートする必要があります。

# SELECT txt, pgs2getscore(ctid, 'idx') as score FROM tbl
           WHERE txt @@ 'こんにちは さようなら' ORDER BY score DESC;

   今回は、全文検索の基本的なバリエーションについて紹介しつつ、全文検索クエリの指定順や、検索方式の自動的な切り替え、フラグによるインデックス設定の指定など、利用する際の注意点について説明しました。

   次回は全文検索インデックスの利用法の応用編を紹介する予定です。
前のページ  1  2  3  4


株式会社NTTデータ 岩崎 正剛
著者プロフィール
株式会社NTTデータ  岩崎 正剛
基盤システム事業本部 オープンソース開発センタ
2002年よりNTTデータにてPCグリッドの研究開発などに従事。2006年よりOSS分野に参画し、現在はLudiaの開発、技術支援を行っている。


INDEX
第5回:Ludiaの多彩な検索機能の秘密
  Ludiaの検索機能
  部分一致検索
  全文検索インデックスの構成オプション
検索スコアの取得