2009-07-23 3 views
1

SQL Serverがテキストの真ん中にある可能性のある検索(例:LIKE%searchKeyword%)でフルテキストインデックスを実際に利用しているのだろうか?SQL Server FullText on%searchKeyword%

私はどこを読んでいるのか忘れていましたが、フルテキストインデックスは「StartsWith」の方法(searchKeyword%)で使用されたときにのみ利用されていました。可変終了。

これが本当である場合はお知らせください。

答えて

0

trueの場合、テキストの途中でもキーワードで動作します。たとえば、以下のリンクは全文検索を使用します。

という単語とその内容の真中にある単語です。それが役に立てば幸い。

http://www.catalogues4u.com.au/Search.aspx?keyword=men

+0

申し訳ありませんが、これは単に本当ではありません - 。私のポストを参照し、2ドキュメントへのリンクを読んで、SQL Serverのフルテキストが%の男性%または*男性のための検索をサポートしません* –

+0

は、私は推測します。質問は%men%をキーワードとして使用していません。そのキーワードは段落やフレーズの中にあります。間違っている場合は正しく入力してください。 – Aneef

1

フルテキストインデックスは、(あなたがそれらを持っている場合、それらはデフォルトで有効になっていません)CONTAINS()FREETEXT()、ないLIKEオペレータのような機能を使用してアクセスされています。

ノーマルインデックス(例えば、「mytableは(テキストフィールドON INDEXのix_tbl_fldをCREATE)」)LIKEオペレータが使用することができますが、パターンは%ワイルドカードで始まっていないとき...これらの検索は、すべてのスキャンを必要とします表の値のあなたが繰り返し同じ値を持つ行の多くを持っている場合

、SQL Server 2008の下の表圧縮を使用するとLIKE「%キーワード%」検索のパフォーマンスを向上させることも、インデックスなし(私は持っていません。それで、私はこの理論をテストすることはできません...)。

+0

LinqクエリでContainsやFreetextにアクセスするにはどうすればよいですか? C#/ LINQから記述するフリーテキストインデックスメソッドにアクセスするにはどうすればよいですか? – Alex

+0

申し訳ありませんが、まさにこのような理由でLINQは避けています。私の味。 – richardtallent

0

MSDNのドキュメントを慎重に読むと、「ホッケー」のような固定式や「ホッケー*」のようなプレフィックスベースの式だけを検索できますが、残念ながらそれ以外のものは検索できません。

参照:

Supported Forms of Query Terms

Performing prefix searches

は残念ながら、それはほとんどすべてがあります。あなたはあなたの強力な検索*ないだけを与えるだけでなく、あなたの結果をランク付けし返す

マルク・

0

:-(「ホッケー」SQL Serverでのフリーテキスト検索を行うための最善の方法を検索することができません、 FreeTextTableを使用することです

例:。

SELECT * 
FROM FreeTextTable(YourTableName,(Column1,Column2), 'search term') 
INNER JOIN YourTableName as T ON T.ID = [Key] ORDER BY RANK DESC 

これは、あなたは彼らが(RANK列を経由して)一致に近い方法の結果を順にランク付けし与える

  • "単語、フレーズ、または文章を含む任意のテキストを入力できます。任意の用語または任意の用語の形式が全文索引で見つかった場合、一致が生成されます。freetext_stringは、単語が途切れてしまい、シソーラスを通過しました。 freetext_stringが二重引用符で囲まれている場合、代わりにフレーズ一致が実行されます。語幹とシソーラスは実行されません「