Звездочка полнотекстового поиска возвращает неверный результат - PullRequest
0 голосов
/ 27 июня 2018

У меня есть таблица кораблей с индексом 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' char.

1 Ответ

0 голосов
/ 12 октября 2018
У

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

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

...