Подтвердить что ты не робот

Использовать несколько слов в строке ввода FullText Search

У меня есть базовая хранимая процедура, которая выполняет полный текстовый поиск по 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
4b9b3361

Ответ 1

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

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

Если вы хотите найти все слова, вам понадобится что-то вроде

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

Дополнительную информацию см. в синтаксисе T-SQL CONTAINS, в частности, в разделе Примеры.

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