1つの列(タイトル)を持つテーブル(カタログ)があります。このコラムには、曲(アーティスト、タイトル、リミックス)に関する情報が格納されています。私は検索用語から一致を見つける必要がある状況があります。SQL Server全文検索ジレンマ
SQL Server FTSを有効にし、タイトル列を使用してFTSカタログを作成しました。 FREETEXTTABLEを使ってテストを始めました。
これは、関連性のない多くの結果に戻ることがわかりましたが、トップランクの結果は通常、タイトルがカタログ表に存在する場合には通常正しく表示されます。私が持っていたアプローチの1つは、RANKをパーセントに変換し、パーセント値が90より大きい場合にのみ結果を表示することでした。問題は、タイトルがCatalogテーブルに存在しない場合でもクエリは関連性のない結果を返します。
代わりに、CONTAINSTABLEを使用します。ジレンマは、検索語には区切りがないことである
SELECT DISTINCT ft.[rank], [Id]
FROM CONTAINSTABLE(Catalogs, Title, '"artist" AND "title" AND "remix"') AS ft
JOIN [Catalogs] ON [Catalogs].[Id] = ft.[KEY]
:ここでの問題は、私のようなものを作成し、動的コードでクエリを生成する必要が(言葉を打破する)ということです。つまり、文字列をアーティストとタイトルに論理的に分割することはできません。時には、他の用語がラベルのように含まれているため、上記のクエリが失敗することがあります。
私はちょっと立ち往生しています。誰もSQL ServerのFTSを使用して同様の問題を扱っていますか? CONTAINSTABLEとFREETEXTTABLEの間にアプローチがありますか?