【问题标题】:SQL Server Full-Text Search SyntaxSQL Server 全文搜索语法
【发布时间】:2012-01-25 21:16:05
【问题描述】:

Microsoft's documentation for CONTAINS 在其示例中包含以下两个子句。

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

还有……

CONTAINS(Description, ' Aluminum AND spindle ');

请注意,第一个示例将两个搜索词都放在双引号内,而第二个示例没有。我似乎找不到任何地方可以解释两者之间的区别。

由于既没有使用FORMSOF(INFLECTIONAL, ...) 也没有使用FORMSOF(THESAURUS, ...),我只能假设在这两种情况下这些词都是按字面意思比较的。这意味着两个版本是相等的。那么为什么在第一个示例中将它们包含在双引号中呢?

【问题讨论】:

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


    【解决方案1】:

    据我了解,仅当搜索短语包含通配符或多个单词时,才严格要求使用引号。如果搜索词组是单个单词并且不使用通配符,那么严格来说,不需要双引号。

    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* 完全匹配的内容。>

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2010-09-06
      • 1970-01-01
      • 2011-06-10
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多