2015-11-06 73 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 –