近距离匹配单词

Matching words in close proximity

我在 SQL 2012 年有一个 table,我正在对其执行全文搜索。

作为较大字符串的一部分,其中一条记录包含文本 'Trying out your system'。

问题是,如果我在目标字符串中搜索靠得太近的两个词,我将找不到匹配项。

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

我知道我可以通过将搜索模式括在双引号中来搜索准确的字符串,但这并不是我真正想要的。

有什么建议可以匹配以上所有搜索词吗?

谢谢。

这听起来像是 stopwords 的问题("the"、"your" 等常用词通常会从全文索引中过滤掉,因此您无法搜索他们)。

为防止这种情况发生,您可以修改全文索引,使其不使用非索引字表(换句话说,每个单词都将被编入索引并因此可搜索)。

ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF

之后一定要重建全文目录。

但只有在您确实需要搜索常用词的能力时才这样做。通常这不是必需的。此外,这样做可能会减慢您的全文搜索速度。