我有一個表(目錄)與一列(標題)。此欄存儲有關歌曲(藝術家,標題,混音)的信息。我有一種情況,我需要從搜索詞中找到匹配項。SQL Server全文搜索困境
我啓用了SQL Server FTS並使用Title列創建了FTS目錄。我在搜索詞中通過了使用FREETEXTTABLE的測試。
我發現這將返回許多不相關的結果,儘管如果標題存在於Catalog表中,排名靠前的結果通常是正確的。我的一種方法是將RANK轉換爲百分比,並只顯示百分比大於90的結果。問題是,如果標題在目錄表中不存在,則查詢仍會返回不相關的結果。
另一種方法是使用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之間是否有一種方法?