MySQL полный текст с основами

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

Проблема в том, что MySQL рассматривает основы как буквальные. Вот процесс, который происходит:

  1. пользователь ищет слово типа "бейсбол"
  2. мой алгоритм stemming (Porter Stemmer) превращает "бейсбольные мячи" в "бейсбольные"
  3. fulltext не находит ничего подходящего для "бейсбола", хотя должны быть совпадения для "бейсбола" и "бейсбола"

Как мне сделать эквивалент LIKE 'basebal%' с полным текстом?

РЕДАКТИРОВАТЬ:

Вот мой текущий запрос:

SELECT MATCH (`title`,`body`) AGAINST ('basebal') AS `relevance`,`id` FROM `blogs` WHERE MATCH (`title`,`body`) AGAINST ('basebal') ORDER BY `relevance` DESC

2 ответа

Решение

Я думаю, что это будет работать со звездочкой в ​​конце: basebal*, Увидеть * Оператор на этой странице для получения дополнительной информации.

IN NATURAL LANGUAGE MODEявляется режимом по умолчанию и несовместим со стеммингом. ПытатьсяIN BOOLEAN MODE с подстановочными знаками...

SELECT MATCH (`title`, `body`) AGAINST ('basebal*' IN BOOLEAN MODE) AS `relevance`, `id` FROM `blogs` WHERE MATCH (`title`, `body`) AGAINST ('basebal*' IN BOOLEAN MODE) ORDER BY `relevance` DESC

Приведенный выше пример дает ясность для людей, которые сталкиваются с этим вопросом через 10 лет после того, как его задали. Тема по-прежнему актуальна и извлекает выгоду из полных примеров

См. Эту ссылку. Stemming не установлен по умолчанию в MySQL, но вы можете установить его самостоятельно.

http://oksoft.blogspot.com/2009/05/stemming-words-in-mysql.html

Другие вопросы по тегам