SQL Contains () не возвращает результаты для 'The' - PullRequest
1 голос
/ 28 мая 2020

У меня есть сценарий SQL, как показано ниже, для запроса моей ContactInfoes таблицы

SELECT * 
FROM ContactInfoes
WHERE CONTAINS(Name, 'The') 

Я получаю только пустой набор результатов. У меня есть запись в моей таблице с названием «Компания».

Почему я не получаю здесь никаких данных и как это можно решить. Любая помощь приветствуется.

Я использую SQL Server 2019

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

Вы создали индекс FULLTEXT без указания STOPLIST. Таким образом, был использован STOPLIST по умолчанию. По умолчанию слово «the» - это стоп-слово, которое удалено из вашего текста. Если вы хотите выполнить поиск по слову «the», вы должны создать пустой STOPLIST, а затем указать этот STOPLIST в своем FULLTEXT INDEX. Стоп-слова по умолчанию, которые вы можете проверить по запросу:

SELECT *
FROM sys.fulltext_system_stopwords
WHERE language_id = 1033 -- English

Затем вы можете создать пустой STOPLIST:

CREATE FULLTEXT STOPLIST MyEmptyStopList;  
GO 

Затем установить его в свой FULLTEXT INDEX:

CREATE FULLTEXT INDEX ON table_name ... STOPLIST = MyEmptyStopList;
2 голосов
/ 28 мая 2020

Простым решением для меня было отключить стоп-лист с помощью приведенного ниже скрипта

ALTER FULLTEXT INDEX ON [tablename]  Set StopList = OFF

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

...