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

У меня есть таблица с именем «факт» со столбцом заголовка, которая должна быть полнотекстовым индексом.

Во-первых, я добавляю полнотекстовый индекс:

ALTER TABLE fact ADD FULLTEXT title_fts (title)

Итак, я вставляю строку:

INSERT INTO fact (id, title) VALUES ('1', 'red blue yellow ok green grey ten first wise form');

И затем я выполняю поиск:

select * from fact f where contains (f.title, '"red" or "blue"')

Когда я выполняю следующий запрос или любой другой запрос с оператором «содержит», я получаю пустой набор результатов:

Я должен использовать это утверждение, не против соответствия или подобное. У кого-нибудь есть идеи, почему это происходит? Спасибо.


person YoungDev    schedule 01.07.2015    source источник
comment
Это не полнотекстовый поиск, вам нужно использовать синтаксис match against   -  person Abhik Chakraborty    schedule 01.07.2015
comment
Вы совершенно правы. Это решило это. Спасибо!   -  person YoungDev    schedule 01.07.2015


Ответы (1)


При использовании полнотекстового поиска есть два действительно важных понятия. Во-первых, это минимальная рабочая длина (см. здесь< /а>). По умолчанию значение равно 4, что означает, что слова короче этого значения игнорируются. До свидания «красный», «ок», «десятка» и другие короткие слова.

Второй важной концепцией является список стоп-слов (см. здесь). Это также избавит вас от «хорошо» и «сначала».

В вашем тексте нет «синего», а «красный» игнорируется, поэтому ваш запрос ничего не возвращает.

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

person Gordon Linoff    schedule 01.07.2015
comment
Большое спасибо! Но когда я делаю то же самое с (только) словами из 5 букв, а именно: выбираю * из факта f, где содержится (f.title, «зеленый или желтый»), я все равно получаю пустой результирующий набор. Следует ли переконфигурировать полнотекстовый индекс? - person YoungDev; 01.07.2015
comment
@YoungDev. . . Вам также необходимо узнать о логическом режиме и режиме естественного языка. Структура ваших запросов предполагает, что вы должны придерживаться логического режима. - person Gordon Linoff; 01.07.2015