2008-08-04 4 views
16
私は#を信じる

SQL Full Text Indexingで#を含む単語の結果が返されないのはなぜですか?

SELECT * FROM Table WHERE SearchField LIKE '%c#%' 

:私が使用した場合の結果を返す列SearchFieldを使用するように定義されたフルテキストインデックスを持つ

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 

:たとえば、私のクエリは、次の使用して、SQL Server 2005のよう

です特殊な文字なので、どのように私はFREETEXTは、上記のクエリのために正常に動作することができますか?

+0

「c \\#」はどうでしょうか? –

答えて

10

#charは句読点としてインデックス付けされているため無視されていますので、単語インデックスの無視リストから文字Cを削除するようです。

これを実行した後でローカルでテストし、インデックスを再構築して結果が得られました!

インデックスされた列で別のワードブレーカ言語を使用すると、それらの特殊文字が無視されないように見えます。

編集:私はまたthis informationが見つかりました:

C#が(cはあなたのノイズワードリストにない場合は、後でノイズワードリストの詳細を参照してください)cとインデックス付けされていますが、C#はC#(のようにインデックスされますCまたはCがノイズワードリストに含まれているかどうかに関係なく、Win2003で実行されるSQL 2005およびSQL 2000)。 C#だけでなく、大文字の後ろに#が付いています。逆に、C++(およびその他の小文字の後ろに++が続く)は、cとして索引付けされます(cがノイズ・ワード・リストにあるかどうかにかかわらず)。

1

インデックスサービスのクエリ言語についてあまり-、複製ヘルプページを引用:

は、&として特別扱いの文字を使用するには、|、^、#、@、$、(、)、クエリでは、クエリーを引用符( ")で囲みます。

私が知る限り、MSSQLのフルテキスト検索は、インデックスサービスによっても行われます。

関連する問題