MS SQL CONTAINS with&符搜索

时间:2016-07-28 17:19:01

标签: sql-server full-text-search contains

我有一个名为'name'的FULLTEXT列,每行可能包含多个单词。使用CONTAINS,我可以搜索可变数量的单词,它可以工作,除非其中一个单词中有一个&符号。

示例:name ='Bob Brown AB& CD' 这有效:

CONTAINS(name, '"*Bo*" AND "*Br*"')

这些没有(用&符号搜索任何单词):

CONTAINS(name, '"*AB*"')
CONTAINS(name,'"*AB&CD*"')
CONTAINS(name,'"*&*"')

我意识到为什么最后一次搜索不起作用,因为CONTAINS只从单词的开头搜索。

&符号是否被FULLTEXT处理为分词?如果是这样,这可能解释为什么包括&符号的搜索会失败。但它无法解释为什么

CONTAINS(name, '"*AB*"')
CONTAINS(name, '"*CD*"') (assuming FULLTEXT sees "CD" as a different word)

会失败。

如果我搜索“AB& CD”或只搜索“AB”或只搜索“CD”,如何减轻搜索以便返回行?

P.S。动态SQL不是一个选项,因此我无法连接可变数量的LIKE。

1 个答案:

答案 0 :(得分:0)

显然,我找到了答案。我设置了

STOPLIST = OFF

在我的FULLTEXT索引上,现在我可以成功搜索“ AB ”和“ AB& CD ”。