Проблемы с использованием поиска MySQL FULLTEXT - PullRequest
1 голос
/ 26 августа 2009

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

У меня есть таблица MySQL с именем aromaProducts, в которой есть 7 столбцов с индексом FULLTEXT и в которой три записи. Когда я делаю запрос против него, как:

ВЫБРАТЬ * ИЗ АРОМАТИЧЕСКОГО ПРОДУКТА, ГДЕ СООТВЕТСТВУЮЩЕГО (название) ПРОТИВ («ромашка»);

Я получаю правильный результат. Однако, когда я пытаюсь добавить второе поле для поиска, я получаю сообщение об ошибке:

Не удается найти индекс FULLTEXT, соответствующий списку столбцов

Каждый отдельный столбец работает нормально. Я также явно добавил WITH QUERY EXPANSION и то же самое.

У меня есть другая таблица, aromaProducts1, и вместо назначения FULLTEXT полям по одному, я назначил ее всем 7 в момент создания таблицы. Против этой таблицы не работают никакие запросы. При рассмотрении структуры таблицы, разница заключается в следующем:

В первой таблице показано каждое поле, имеющее собственный индекс FULLTEXT, а во втором - один индекс с именем title (первое поле, которому он назначен), и оно применяется ко всем семи полям.

Все столбцы, которые я сделал FULLTEXT, являются типами данных VARCHAR или TEXT. Я понятия не имею, в чем проблема.

Ответы [ 2 ]

5 голосов
/ 26 августа 2009

Вам необходимо создать полнотекстовый индекс для всех столбцов, которые вы хотите сопоставить

Если вы хотите сопоставить (col1, col2, col3), вы должны создать полнотекстовый индекс для col1, col2 и col3. Если вы хотите сопоставить с (col1, col2), вам нужно внедрить другой полнотекстовый индекс (на col1 и col2), его нельзя использовать на col1, col2 и col3

2 голосов
/ 26 августа 2009

Вы должны создать один полнотекстовый индекс с несколькими столбцами, а не один для каждого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...