我有一個SQL Server 2008數據庫,全文索引設置爲用於搜索的一個表列。SQL Server全文沒有考慮到前導零
當試圖使用CONTAINS子句對以下條件執行對查詢的查詢:「003」時,它忽略前導零並返回匹配「3」的所有行。
我們正在努力考慮搜索的前導零,任何想法?
(全文的清單是空的)。
UPDATE:查詢
SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')
我有一個SQL Server 2008數據庫,全文索引設置爲用於搜索的一個表列。SQL Server全文沒有考慮到前導零
當試圖使用CONTAINS子句對以下條件執行對查詢的查詢:「003」時,它忽略前導零並返回匹配「3」的所有行。
我們正在努力考慮搜索的前導零,任何想法?
(全文的清單是空的)。
UPDATE:查詢
SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')
我前一段時間有過這樣類似的問題。
也許一種方法可能是通過全文搜索選擇幾個結果,然後從這些結果中選擇特定結果。但也許可以有更好的解決方案。
我試過這種方法,它實際上工作。它也工作很多,然後只選擇該值。
我遇到了同樣的問題,發現問題與全文解析器處理前導0的方式有關。 This post幫助我更好地理解。如果您使用sys.dm_fts_parser來檢查全文解析器如何解析具有前導0的數字,則可以自己查看問題。
我真的希望微軟允許這個'功能'關閉。其他答案中提到的解決方法效果很好,但是,不容易基於多個列進行匹配,例如各種全文搜索功能。
此問題的一個可能的解決方案是使用自定義詞典。更多的細節可以在這個答案中找到:https://stackoverflow.com/a/22704439/1899。
向我們顯示您的查詢。 –
查詢的輸出是什麼?你說它返回所有匹配「3」的行,但是它是否也返回帶有前導零的行?普通的SELECT * FROM Table where where SearhIndex LIKE'003%'是否有效? – TheBoyan
確實返回帶有前導零的那些和沒有它們的那些。 – luisporras