2010-08-09 3 views
23

У меня есть базовая хранимая процедура, которая выполняет полнотекстовый поиск по 3 столбцам в таблице, передавая параметр @Keyword. Он отлично работает одним словом, но падает, когда я пытаюсь передать несколько слов. Я не знаю, почему. Ошибка говорит:Использовать несколько слов в полнотекстовой строке ввода ввода

Ошибка синтаксиса около «поиска пункт» в условии поиска полнотекстового «это поиск пункт»

SELECT  S.[SeriesID], 
      S.[Name] as 'SeriesName', 
      P.[PackageID], 
      P.[Name]  
FROM  [Series] S 
INNER JOIN [PackageSeries] PS ON S.[SeriesID] = PS.[PackageID] 
INNER JOIN [Package]  P ON PS.[PackageID] = P.[PackageID] 
WHERE CONTAINS ((S.[Name],S.[Description], S.[Keywords]),@Keywords) 
AND (S.[IsActive] = 1) AND (P.[IsActive] = 1) 
ORDER BY [Name] ASC 

ответ

34

Вам придется сделать некоторые предварительной обработки на вашем параметре @Keyword перед тем как передать его в оператор SQL. SQL ожидает, что поиск по ключевым словам будет разделен логической логикой или окружен кавычками. Итак, если вы ищете фразу, она должна быть в кавычках:

SET @Keyword = '"this is a search item"' 

Если вы хотите найти все слова, то вам нужно что-то вроде

SET @Keyword = '"this" AND "is" AND "a" AND "search" AND "item"' 

Для более информацию см. в разделе T-SQL CONTAINS syntax, в частности, на странице Примеры раздел.

В качестве дополнительного примечания обязательно замените символ двойной кавычки (пробел), чтобы вы не испортили свой полнотекстовый запрос. См. Этот вопрос для получения дополнительной информации о том, как это сделать: SQL Server Full Text Search Escape Characters?

+0

Спасибо. Не знаю, почему в документации MSDN, на которую я смотрел, не было такого простого, но чрезвычайно распространенного примера. – MikeTeeVee

+0

@Aaron Является ли этот И-оператор работать, если используется MATCH вместо CONTAINS? Поскольку я не получаю никакого вывода для AND с условием MATCH – Raj

+0

Как искать фразы, содержащие «? Мы ставим double» или какой синтаксис? – MonsterMMORPG

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