Использование SQL Server 2016.
У меня есть таблица в базе данных, которая содержит продукты, которые я ищу по ключевым словам с помощью полнотекстового поиска. Наш клиент попросил, чтобы мы удалили один символ «n» из стоп-списка, чтобы разрешить поиск по таким терминам, как «fish n chips» (ненастоящий пример).
Однако после изменения стоп-списка и перестроения индекса я вижу неожиданные результаты, в частности, нулевой ранг:
SELECT * FROM CONTAINSTABLE (dbo.Products, Keywords, ' "no*"')
SELECT * FROM CONTAINSTABLE (dbo.Products, Keywords, ' "n*"')
Дает мне результаты:
Как видите, я получаю ранг 0 за все результаты. Я пробовал это с другими персонажами, и я получил RANK
, как и ожидалось. Я проверил стоп-листы по:
SELECT * FROM sys.fulltext_stoplists
SELECT * FROM sys.fulltext_stopwords
WHERE stoplist_id = 5 AND language_id = 1033
В общем, я не вижу причин для возврата ранга 0. Что меня больше смутило, так это то, что у меня есть вторая база данных на том же сервере, использующая тот же индекс и список остановки, и это не проблема.
Я изучал это и видел людей, имеющих эту проблему около FREETEXTTABLE
, однако проблема здесь не в нехватке данных.
Если у кого-то есть идеи о вещах, которые я могу проверить, чтобы помочь отследить это, они будут с благодарностью приняты.