Реализация полнотекстового поиска на SQL Server 2008 Проблема - PullRequest
2 голосов
/ 26 мая 2011

У меня есть следующая хранимая процедура,

CREATE Procedure sp_SearchDB (
  @SearchWord nvarchar(200)
)

SET @SearchWord = '"*' + @SearchWord + '*"'

 Select * 
   from Table1
  Where Contains(Description, @SearchWord)

Когда я ищу «SQL Server», он возвращает результаты с «SQL» или «Server», но не возвращает данные с «SQLServer»(если пробелов нет), аналогично, если задать searchword = SQLServer, он не вернет «SQL Server» (с пробелами).Как получить результаты «SQL Server» и «SQLServer»?

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Плохие новости, вы можете сделать это, но это даст вам некоторые ложные срабатывания.Попробуйте:

EXEC sp_SearchDB N'SQL'

Если вам небезразличны ложные срабатывания, они отвечают: нет способа сделать это.Если вам нужны и «SQL Server», и «SQLServer», вы должны сделать:

Select * from Table1 Where Contains(Description, '"SQL Server" OR "SQLServer"').

Вы можете написать код, который всегда будет пытаться найти оба слова вместе и в отдельности.Если ваш клиент ищет:

baby sitter

Ваш код создаст эти варианты, когда найдет пробел:

'"baby sitter" or "babysitter"' 

Надеюсь, вы его получите.

0 голосов
/ 26 мая 2011

Вам необходимо выполнить процедуру следующим образом:

EXEC sp_SearchDB N'SQL SERVER'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...