#sql-server
#sql-сервер
Вопрос:
Я хочу реализовать полнотекстовые индексы в столбце в моей базе данных SQL Azure, который содержит телефонные номера.
Я попытался использовать разные параметры и подстановочные знаки в моем предикате CONTAINS.
Я не могу использовать обходной путь, который я видел, чтобы сохранить столбец для поиска в порядке обратной строки.
Запрашиваемая таблица чрезвычайно велика (в дополнение к другим функциям поиска, которые мы используем в системе), что является причиной нашей потребности в этом полнотекстовом индексе.
Сначала приведем упрощенную таблицу
CREATE TABLE PhoneNumbers (PhoneNumber NVARCHAR(100))
Затем я сохраняю номер телефона
INSERT INTO PhoneNumber ('491212780579')
Теперь пользователи выполняют поиск по полю номера телефона. В этом примере наш пользователь ищет: 1212780579
К базе данных этот запрос отображается как:
SELECT * FROM PhoneNumber WHERE CONTAINS(PhoneNumber, '"1212780579"')
Я ожидаю, что запрос вернет номер телефона 491212780579, сохраненный в таблице, поскольку строка поиска содержится в данных, введенных в этот столбец. Он вообще не возвращается.
Я неправильно использую функциональность полнотекстового поиска?
Комментарии:
1. Полный текст предназначен для слов, а не цифр. Я полагаю, что числа — это стоп-слова или шумовые слова.
2. @HoneyBadger Я тоже так подумал, поэтому я отключил стоп-лист в индексе, но, к сожалению, ничего не изменилось:(
3. Итак, после еще некоторых размышлений, похоже, что возвращение к использованию LIKE — лучший подход для меня здесь. Мои другие столбцы могут использовать FTI просто отлично, но для простоты я считаю, что возврат — мой лучший вариант.