Полнотекстовый поиск не дает правильных результатов

У нас есть полнотекстовый индекс для поля xml в нашей базе данных.

Если я запускаю этот запрос:

select *
  from UserProfile
  where CONTAINS(UserData,'028894507')

Я получаю правильные результаты. Но если я запускаю этот запрос:

select *
  from UserProfile
  where CONTAINS(UserData,'02889')

Я получаю совершенно другой набор результатов, и он даже не включает результаты первого запроса.

Я сделал быстрый поиск в Google и обнаружил, что есть стоп-слова, которые могут испортить результаты, но в моей базе данных нет даже стоп-листа...


person steveman2292    schedule 06.05.2016    source источник


Ответы (1)


Однако я не эксперт по TSQL - я считаю, что CONTAINS ищет совпадения целых слов. Вы также можете искать совпадения префикса, используя символ *.

select * from UserProfile where CONTAINS(UserData,'"02889*"')

Это должно соответствовать строкам, содержащим 028894507, а также любой строке с номером, начинающимся с 02889. Обратите внимание, что двойные кавычки важны при сопоставлении префикса.

https://msdn.microsoft.com/en-us/library/ms187787.aspx

person rp372    schedule 06.05.2016