2015-11-06 44 views
0

我在SQL 2012中有一個表,我正在執行全文搜索。匹配的詞很接近

其中一條記錄作爲較大字符串的一部分包含文本'試用您的系統'。

問題是,如果我在目標字符串中搜索太靠近的兩個單詞,我不會匹配。

select * from mytable where contains(*,'trying') -- match 
select * from mytable where contains(*,'trying and out') -- no match 
select * from mytable where contains(*,'trying and your') -- no match 
select * from mytable where contains(*,'trying and system') -- match 

我知道,我可以封閉在雙引號搜索模式一個確切的字符串搜索,但是這不是真的我後。

任何建議如何我可以使所有上述搜索條件匹配?

謝謝。

回答

1

這聽起來像是stopwords(通常的詞,如「the」,「your」等通常是從全文索引中過濾出來的,因此無法在其上搜索)的問題。

爲了防止發生這種情況,您可以修改您的全文索引,以便它不使用停用列表(換句話說,每個單詞都將被索引並因此可搜索)。

ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF 

之後一定要重建全文目錄。

但只有在您確實需要搜索常用詞的功能時才能做到這一點。通常這不是必需的。另外,這樣做可能會減慢全文搜索的速度。

+0

謝謝基思。我認爲你是對的。我偶然發現了這篇文章,這很有趣。 http://stackoverflow.com/a/10451332/494635 –