Ведущий подстановочный знак полнотекстового поиска SQL Server

После просмотра этот SO вопрос и мое собственное исследование, похоже, у вас не может быть ведущего подстановочного знака при использовании полнотекстового поиска.

Итак, в самом простом примере, если у меня есть таблица с 1 столбцом, как показано ниже:

ТАБЛИЦА 1

монета
чеканка
Undercoin

select COLUMN1 from TABLE1 where COLUMN1 LIKE '%coin%' Принесет мне те результаты, которые я хочу.

Как я могу получить точно такие же результаты, если для столбца включен ПОЛНЫЙ ТЕКСТОВЫЙ ПОИСК?

Следующие два запроса возвращают одни и те же данные, что не совсем то, что мне нужно.

SELECT COLUMN1 FROM TABLE1 WHERE CONTAINS(COLUMN1, '"coin*"')

SELECT COLUMN1 FROM TABLE1 WHERE CONTAINS(COLUMN1, '"*coin*"')

person aherrick    schedule 18.04.2010    source источник
comment
Вам нужно любое значение COLUMN1, содержащее четыре буквы слова «монета», или значения, содержащие слово «монета»?   -  person Thomas    schedule 19.04.2010
comment
Ну, я бы подумал, что любое значение COLUMN1, которое содержит четыре буквы «монета» So. монета, андеркойн, чеканка, монета рок, серебряная монета, все должно совпадать.   -  person aherrick    schedule 19.04.2010


Ответы (1)


Полнотекстовый поиск работает с поиском слов или основ слов. Таким образом, он не находит слова «монета» в «андеркоине». То, что вы ищете, - это возможность использовать суффиксы поиска с использованием полнотекстового поиска, а он не делает этого изначально. Есть некоторые хитрые обходные пути, такие как создание обратного индекса и поиск по "nioc".

person Thomas    schedule 18.04.2010
comment
Очень красивое решение, но насколько оно быстро по сравнению с like '%abc%' - person alexanderg; 07.03.2013
comment
@alexanderg - в зависимости от объема данных это может быть на много порядков быстрее. В этом разница между поиском по индексу или сканированием всей таблицы (что будет делать %abc%). - person Thomas; 07.03.2013
comment
Спасибо. Это то, что мне нужно, и я попробую. - person alexanderg; 07.03.2013