Полнотекстовый поиск телефонных номеров

#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 просто отлично, но для простоты я считаю, что возврат — мой лучший вариант.