我有一個搜索查詢需要由用戶輸入的短語,應返回結果,這裏有一個例子:CONTAINSTABLE通配符在短語匹配上失敗?
SELECT rank,[KEY] FROM CONTAINSTABLE(tblproduct, (title,subtitle,publisher_name), @search_text,15)
哪裏@search_text是
Set @search_text = '"my favourite word*"'
這句話,因爲它與數據庫中的圖書完全匹配。但是,通配符(*)使得它不會返回任何結果。
當我省略通配符時,我得到一個精確的詞組匹配,但是,其他一些詞組,例如「The Imperfectionists」不帶任何通配符返回任何結果。
這是爲什麼?我可以檢查什麼?
目前,如果沒有爲通配符生成結果集,我運行沒有通配符的查詢來查看它是否返回任何內容。如果這也失敗了,我運行一個正常的「喜歡」的聲明。
顯然類似聲明將採取永遠......我不想使用它爲數字應與全文進行搜索的760萬,強大的數據庫...
任何幫助表示讚賞!
好的,這是有道理的,因爲我已經注意到sys.dm_fts_parser顯示「完全匹配」沒有*和「噪音詞」與*(或者它是相反的方式,不確定)。但是,我的「解決方法」是在沒有返回結果集時添加通配符。而且它似乎正在工作'好吧'。雖然並不理想,但我會考慮使用fts_parser並在添加*之前先濾除噪音詞,但是我擔心我會得到和現在一樣的結果 – user85569
yea,it另一種方式。當我使用它時,我認爲它是完全匹配的(使用fts_parser),當我使用它時沒有使用噪音詞(很可能爲什麼我在沒有通配符的情況下匹配確切的短語匹配)。 – user85569
我正在評估這一點。但是,我想指出的是,JStead也爲答案提供了很多幫助。我想現在我明白了全文索引如何索引搜索條件,以及爲什麼通配符在完全匹配時沒有結果。 – user85569