MySQL полнотекстовый поиск с разделителями - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть таблица MySQL с полем 'tags', в котором используется индекс FULLTEXT.Это поле содержит список значений, разделенных запятыми, например, «книги, игрушки, диван шоколадного цвета».

SELECT * FROM Store WHERE MATCH(Store.tags) AGAINST ('"chocolate"' IN BOOLEAN MODE);

Пример запроса (приведенный выше) соответствует записям, содержащим «диван шоколадного цвета».Я хотел бы только получить записи, которые содержат «шоколад» внутри разделителей (в данном случае запятых).Другими словами, я ожидал бы, что пример записи потерпит совпадение.

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

Любые указатели будут оценены.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

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

SELECT * FROM Store WHERE MATCH(Store.tags) AGAINST ('"chocolate,"' IN BOOLEAN MODE);

Но будьте осторожны с тегами длиной менее 4 символов, они не совпадают ... ну, вы можете настроить егов my.ini

[mysqld]
ft_min_word_len=3
0 голосов
/ 06 сентября 2011

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

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

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