2012-01-25 2 views
3

Microsoft's documentation for CONTAINS содержит следующие два предложения в своих примерах.Синтаксис полнотекстового поиска SQL Server

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

А также ...

CONTAINS(Description, ' Aluminum AND spindle '); 

Обратите внимание, что первый пример помещает оба условия поиска в двойные кавычки, в то время как второй пример не делает. Я не могу найти нигде, где он объясняет, в чем разница между ними.

Поскольку не используются ни FORMSOF(INFLECTIONAL, ...), ни FORMSOF(THESAURUS, ...), я могу только предположить, что слова сравниваются буквально в обоих случаях. Это означает, что обе версии равны. Так зачем включать их в двойные кавычки в первом примере?

ответ

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 (столбец, «текст *»), полнотекстовый поиск рассматривает звездочку как символ и ищет точные соответствия с текстом *.>

Смежные вопросы