2007年12月18日火曜日

フルテキスト検索時の書き方

忘れないためのメモとして。
大まかに言えば二通りに分かれるみたい。
一つ目はこれ。

SELECT *
FROM
  TEST_FULLTEXT TFT
WHERE
  CONTAINS(TESTSTRING,'"10*"')

二つ目がこれ。

SELECT *
FROM
  TEST_FULLTEXT TFT
    INNER JOIN CONTAINSTABLE(TEST_FULLTEXT, TESTSTRING,'"10*"') KFT
      ON (TFT.TESTUID = KFT.[KEY])
ORDER BY
  KFT.RANKDESC;

二つの違いは「検索結果のランクを利用するかしないか」。上が利用しない純粋な検索で、下がランクを利用した、どちらかというとGoogle先生っぽいやりかた。
恐らく今回は二つ目のやりかたになるだろうなぁ。
しかし試しに100万件のテストデータつくって検索してみたけど、LIKE検索よりも10数%は高速っぽい。

0 件のコメント:

コメントを投稿