Я использую 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
и полнотекстовом индексировании, но не могу понять этого поведения. Должно быть, я делаю что-то не так.
Может ли кто-нибудь объяснить мне, что происходит и как выполнить поиск, который я описал?