2

フルテキスト フィールドを持つテーブルがあるとします。このフィールドは と呼ばれtextます。テーブルの内容は次のようになります。

car wash
car and wash

言葉andは私の中にあるstoplist

ここで、次の sql を使用してこのテーブルにクエリを実行します。

select * from mytable
where contains(text, '"car wash"')

このクエリは、car wash行ではなく行のみを返しますcar and wash。単語がストップ ワードであると仮定すると、 SQL が行andを返さないのはなぜですか?car and wash

私はフレーズ検索を行っていることを知っています ("" を使用)。それはまさに私が必要としているものですが、Sql はストップ リスト内の単語を無視する必要があり、それは起こっていることではないと思います。それは私を夢中にさせています。

私の理解では、FT アルゴリズムがそのようなフレーズを見つけると、car and washインデックスのみが作成されcarwash. これは本当ですか?

また、クエリを実行するft_parserと、期待どおりの内容が表示されます。

SELECT * FROM sys.dm_fts_parser ('"car and wash"', 1033, 5, 0)

    special_term    display_term    
    Exact Match         car 
    Noise Word          and 
    Exact Match         wash    

何かご意見は?

4

1 に答える 1

0

この記事を見てください: ストップワード

fts はストップワードの包含を無視しますが、フルテキスト インデックスはそれらの位置を考慮します

fts が「and」という単語を無視すると、「car」と「wash」の位置が 1 と 3 になるため、見つかりません。

代わりに別の用語を提案します。「洗車と洗車」などの言葉を使いたいと思うかもしれません。それはビジネスロジックに依存します

于 2011-07-29T10:54:13.297 に答える