Проблема с полнотекстовым поиском MySQL в сочетании с ИЛИ?

0

У меня есть таблица Document с полным текстовым индексом headline_idx на два столбца, заголовок и текст, где текст является столбцом MEDIUMTEXT, есть также некоторые другие поля, один из названных lang.

Если я сделаю следующее, выберите:

select * from Document where lang= 'en' AND match(headLine,text) against ("test")

все работает нормально, индекс полнотекстового использования используется, как и ожидалось, но если я изменил AND на OR следующим образом:

select * from Document where lang= 'en' OR match(headLine,text) against ("test")

полный текстовый индекс НЕ используется, он даже не является частью possible_keys, если я делаю EXPLAIN EXTENDED, что делает любые подсказки индекса бесполезными.

Я был бы счастлив добавить третий столбец в полный текстовый индекс, но в реальном случае этот столбец находится в другой таблице. Я запускаю версию 5.1.35 MySQL.

Любые идеи о том, что происходит?

  • 1
    Я думаю, что вы забыли изменить «И» на «ИЛИ» ...
  • 0
    Ах, спасибо, исправлено.
Теги:
full-text-search

1 ответ

1
Лучший ответ

Цитата из ссылки на MySql: Слияние индексов не применимо к полнотекстовым индексам. Мы планируем расширить его, чтобы охватить их в будущем выпуске MySQL.

Этот конкретный запрос можно перефразировать с помощью объединения, а затем использовать индексы:

select * from Document where lang= 'en' UNION
select * from Document where match(headLine,text) against ("test")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню