0

次の 2 つの用語で全文列を検索したいと考えています。

2011
J Vineyards

ここで、述語を次のように構築します

"2011*" and "j vineyards*"

行は返されません。

一致する必要があるレコードは

2011 j vineyards viognier alexander valley united states

実験の結果、単一の「j」文字に関連しているようです。

編集:

フルテキスト列 BeverageSearchData の select ステートメントを次に示します。

Declare @test nvarchar(100);
Set @test='""2011*" and "j vineyards*"';
Select * from bv_beverage WHERE CONTAINS (BeverageSearchData,@test)
4

3 に答える 3

2

ここでは、いくつかの可能性が考えられます。述語だけでなく完全なクエリは、より良い答えを得るのに役立ちます。

おそらく起こっていることの 1 つは、SQL 全文検索がインデックスを作成するときに単一文字 (J のように) を削除することです。

を使用しCONTAINSている場合は、ノイズ ファイルを変更し、SQL Server 全文検索サービスを再起動する必要がある場合があります。

を使用している場合LIKEは、1 文字のワイルドカードを追加してみてください。それをいじって、2011なしで動作するかどうかを確認してから、再度追加してください.

WHERE myColumn like 'j_vineyards%'
WHERE myColumn like 'j%vineyards%'

注意すべき追加事項は、CONTAINS先頭のワイルドカードをサポートしていないことです。

于 2012-07-06T23:14:00.663 に答える
0

%ではなく、を探してい*ます。

代わりにこれを試してください:

"%2011%" and "%j vineyards%"
于 2012-07-06T22:05:13.817 に答える
0

インデックスを作成する際に選択した言語は何ですか? SQL Serverは、おそらくあなたのケースで起こっているインデックスを作成するときに、デフォルトでシステムの全文ストップリストを関連付けます。

次のように STOPLIST OFF でインデックスを構築してみてください -

CREATE FULLTEXT INDEX on [table]([column]) ON [catalog] WITH STOPLIST OFF;

または、ストップリストを変更して、上記の例の「j」などの特定の単語を除外することもできます。

于 2012-09-10T20:45:57.800 に答える