26

たとえば、SQL Server 2005 を使用したクエリは次のようになります。

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

以下を使用すると結果を返す列 SearchField を使用するように定義されたフルテキスト インデックスがあります。

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

# は特殊文字だと思いますが、上記のクエリで FREETEXT が正しく機能するようにするにはどうすればよいですか?

4

2 に答える 2

14

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

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

これらの特殊文字が無視されないように、インデックス付きの列で別のワード ブレーカー言語を使用することを検討しています。

編集:この情報も見つけました:

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

于 2008-08-04T06:39:40.003 に答える
1

インデックス サービスのクエリ言語について、何度も繰り返されたヘルプ ページを引用します。

&、|、^、#、@、$、(、) などの特別に扱われる文字をクエリで使用するには、クエリを引用符 (") で囲みます。

私の知る限り、全文検索MSSQLも Indexing Service によって行われるので、これが役立つかもしれません。

于 2008-08-04T06:10:16.600 に答える