SQL Server全文搜索语法

3

Microsoft对CONTAINS的文档包括以下两个子句作为示例:

CONTAINS(Name, ' "Mountain" OR "Road" ')

并且...

CONTAINS(Description, ' Aluminum AND spindle ');

请注意,第一个例子将两个搜索条件都放在双引号中,而第二个例子则没有。我无法找到任何地方解释两者之间的区别。
由于两种情况均未使用“FORMSOF(INFLECTIONAL, ...)”或“FORMSOF(THESAURUS, ...)”,因此我只能假设这些单词在两种情况下都是按照字面意思进行比较的。这意味着两个版本是相等的。那么为什么第一个例子要将它们用双引号括起来呢?
1个回答

3

我的理解是,只有当搜索短语包含通配符或多个单词时才严格要求使用引号。 如果搜索短语是单词且不使用通配符,则严格来说不需要双引号。

CONTAINS(LastName, 'Anders') --double quotes not required
CONTAINS(LastName, '"Anders*"') --double quotes required since wildcard used.  Match Anders, Anderson, etc
CONTAINS(Title,  '"End of time"') --double quotes required, since multiple words

当然,即使不需要,也仍然可以使用双引号:
CONTAINS(LastName, '"Anders"')

以下是关于使用通配符时需要双引号的BOL引用:

如果文本和星号未被双引号分隔,因此谓词读作CONTAINS(column, 'text*'),全文搜索将星号视为字符并搜索text*的精确匹配项。>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接