Как обрабатывать односимвольные поисковые запросы в MS-SQL FreeText searching?

StackOverflow https://stackoverflow.com/questions/2320144

Вопрос

У меня возникла проблема с поиском по свободному тексту, который в данный момент запущен на сервере SQL 2000.

В таблице примерно из 1,3 миллиона строк, содержащих названия компаний, я пытаюсь использовать запрос FreeText.Однако, поскольку SQL Server удаляет специальные символы и одиночные символы при построении своего индекса, наш код делает то же самое при отправке запроса.

Например, поисковые запросы типа "Texas A & M" заканчиваются запросом только "Texas", который возвращает массу нерелевантных записей.

Какова наилучшая практика для обработки такого рода поисковых запросов?Можно ли устранить эту проблему путем обновления до более новой версии SQL Server?

На данный момент сторонний механизм индексации, такой как Lucene, не подходит, даже если это устранило бы проблему, в чем я не уверен.

Это было полезно?

Решение

Вы можете попробовать использовать подстановочный знак из одного символа '_', аналогичный:

WHERE myColumn like 'Texas_A_&_M'

или

WHERE myColumn like 'Texas%A_&_M' 

Другие советы

Вы можете проверить, могут ли улучшения в SQL Server 2005 решить вашу проблему:Полнотекстовый поиск SQL Server 2005:Внутренние компоненты и усовершенствования, в частности , о Шумовых Словах в Новые возможности для разработчика.

если вы ищете названия компаний, а не длинные отрывки текста, почему бы просто не использовать LIKE ?

...
WHERE
    CompanyName LIKE '%Texas A%&%M%'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top