質問

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

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

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

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

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

役に立ちましたか?

解決

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

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

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

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

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

他のヒント

Indexing Service のクエリ言語について、多くの複製が行われているヘルプ ページを引用します。

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

私の知る限り、全文検索は MSSQL これもインデックス サービスによって行われるため、これが役立つ場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top