Звездочка полнотекстового поиска возвращает неверный результат

У меня есть таблица кораблей с индексом FTS, которая была создана как:

CREATE FULLTEXT INDEX ON Ship 
(       
    Name 
)
KEY INDEX PK_Ship_Id
ON MyCatalog
WITH CHANGE_TRACKING AUTO, STOPLIST OFF;

И когда я запускаю запрос ниже:

select Name From Ship where CONTAINS(Name, N'"n*"');

Я получаю неправильный результат, например "Витамин D3 1000 Iu". Но я хочу получить только те строки, где в поле имени любое слово начинается с символа 'n'.

1 ответ

Двигатель FTS имеет странную "особенность", когда вы пытаетесь найти что-то, как CONTAINS(Name, N'"n*"'), он ищет все числа, потому что он хранит числа как NN.

Лучшее решение, которое было основано в этих двух случаях (CONTAINS(Name, N'"n*"'), CONTAINS(Name, N'"nn*"')) используйте "лайк" поиск.

Другие вопросы по тегам