Полный текст в SQL Server, не учитывающий ведущие нули - PullRequest
5 голосов
/ 12 декабря 2011

У меня есть база данных SQL Server 2008 с полнотекстовым индексом, равным одному столбцу таблицы, используемому для поиска.

При попытке выполнить запрос к таблице, используя предложение CONTAINS со следующими критериями: «003», он игнорирует начальные нули и возвращает все строки, соответствующие «3».

Мы пытаемся учесть ведущие нули для поиска, есть идеи?

(Стоплист для полного текста пуст).

ОБНОВЛЕНИЕ: Запрос

SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')

Ответы [ 3 ]

0 голосов
/ 07 января 2014

Я столкнулся с этой же проблемой и обнаружил, что проблема в том, как полнотекстовый парсер обрабатывает начальные 0. Этот пост помог мне лучше понять.Вы можете увидеть проблему самостоятельно, если вы используете sys.dm_fts_parser , чтобы проверить, как полнотекстовый парсер будет анализировать число с ведущими 0.

Я действительно хотел бы, чтобы Microsoft разрешила эту 'функциюбыть выключенным.Обходной путь, упомянутый в других ответах, работает хорошо, однако он не позволяет легко сопоставлять на основе нескольких столбцов, как это делают различные функции полнотекстового поиска.

0 голосов
/ 28 марта 2014

Возможное решение этого вопроса - использовать пользовательский словарь. Более подробная информация доступна в этом ответе: https://stackoverflow.com/a/22704439/1899.

0 голосов
/ 13 декабря 2011

Недавно у меня была похожая проблема.

Возможно, одним из подходов может быть выбор нескольких результатов с помощью полнотекстового поиска, а затем ВЫБЕРИТЕ конкретный из этих результатов. Но, возможно, могло бы быть лучшее решение для этого.

Я попробовал этот подход, и он действительно сработал. Это также работает намного быстрее, чем просто выбрать значение.

...