Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server全文搜索语法_Sql Server_Sql Server 2008_Full Text Search - Fatal编程技术网

Sql server SQL Server全文搜索语法

Sql server SQL Server全文搜索语法,sql-server,sql-server-2008,full-text-search,Sql Server,Sql Server 2008,Full Text Search,在示例中包括以下两个子句 CONTAINS(Name, ' "Mountain" OR "Road" ') 而且 CONTAINS(Description, ' Aluminum AND spindle '); 请注意,第一个示例将两个搜索词都放在双引号内,而第二个示例没有。我似乎找不到任何地方可以解释两者之间的区别 由于没有使用FORMSOF(屈折,…)或FORMSOF(同义词表,…),因此我只能假设在这两种情况下都会对单词进行字面上的比较。这意味着两个版本是相同的。那么,为什么在第一个示

在示例中包括以下两个子句

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

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


由于没有使用
FORMSOF(屈折,…)
FORMSOF(同义词表,…)
,因此我只能假设在这两种情况下都会对单词进行字面上的比较。这意味着两个版本是相同的。那么,为什么在第一个示例中使用双引号呢?

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

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"')
以下是关于使用通配符时需要双引号的quote BOL:

如果文本和星号没有用双引号分隔,因此谓词读取CONTAINS(列“text*”),则全文搜索将星号视为字符,并搜索与文本*>