Почему полнотекстовый поиск SQL Server не соответствует числам?

Я использую SQL Server 2014 Express и настроил полнотекстовый индекс для таблицы.

Полнотекстовый индекс индексирует только один столбец, в данном примере названный foo.

В таблице 3 строки. Значения в 3-х строках для этого столбца с полнотекстовым индексом выглядят так...

test 1
test 2
test 3 test 1

Каждая новая строка выше — это новая строка в таблице, и этот текст буквально соответствует тому, что находится в полнотекстовом индексированном столбце. Таким образом, используя функцию SQL Server CONTAINS, если я выполняю следующий запрос, я получаю все строки как совпадения, как и ожидалось.

SELECT * FROM example WHERE CONTAINS(foo, 'test')

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

SELECT * FROM example WHERE CONTAINS(foo, '"test 3"')

Наконец, простой поиск «3» не возвращает совпадающих строк, чего я тоже не ожидал. Я ожидаю одну совпадающую строку из следующего запроса, но не получаю ни одной.

SELECT * FROM example WHERE CONTAINS(foo, '3')

Я читал страницы MSDN о CONTAINS и полнотекстовом индексировании, но не могу понять этого поведения. Должно быть, я делаю что-то не так.

Может ли кто-нибудь объяснить мне, что происходит и как выполнить поиск, который я описал?


person Ryan    schedule 14.07.2014    source источник
comment
Я подозреваю, что числа - это стоп-слова, а не индексированные.   -  person paparazzo    schedule 14.07.2014
comment
Я подозреваю, что стоп-слова виноваты либо в том, что они слишком короткие, либо в том, что они часто используются. -included-even-though-stop-word-li" title="полнотекстовый поиск не работает, если стоп-слово включено, даже если стоп-слово li">stackoverflow.com/questions/12759042/   -  person Mihai    schedule 14.07.2014
comment
Ах да, это стоп-слова. Спасибо за эту ссылку.   -  person Ryan    schedule 14.07.2014


Ответы (1)


Хотя это может быть не ответ, он решил мой первоначальный вопрос. В моем полнотекстовом индексе использовался системный стоп-лист. По какой-то причине некоторые отдельные числа, такие как «1» в «тесте 1», пропускались или что-то еще в стоп-листе.

В следующем вопросе и ответе здесь, на SO, предлагалось полностью отключить стоп-лист. Я сделал это, и теперь мои полнотекстовые поиски совпадают, как я и ожидал, за счет более крупного полнотекстового индекса.

Полнотекстовый поиск не работает, если включено стоп-слово, даже если список стоп-слов пуст

person Ryan    schedule 04.09.2014