Как обрабатывать односимвольные поисковые термины в поиске свободного текста MS-SQL? - PullRequest
1 голос
/ 23 февраля 2010

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 23 февраля 2010

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

...
WHERE
    CompanyName LIKE '%Texas A%&%M%'
0 голосов
/ 23 февраля 2010

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

WHERE myColumn like 'Texas_A_&_M'

или

WHERE myColumn like 'Texas%A_&_M' 
0 голосов
/ 23 февраля 2010

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

...