MySQL MATCH-AGAINST слова во множественном числе?

Я хочу добавить поиск на свой сайт. У меня есть база данных задач из видеоигры. У каждой задачи есть название и описание, я хотел бы иметь возможность поиска хотя бы по описанию, но, если возможно, по обоим. Теперь я настроил таблицу так, что могу использовать ПОИСКПОЗ() ПРОТИВ(), но у меня проблема со словами, которые могут стоять как в единственном, так и во множественном числе.

Например, слово «помощь» появляется в нескольких задачах, но если пользователь введет «помощь», он ничего не получит. Можно ли как-то добавить эту функцию? Я перепробовал все, что мог придумать, но пока ничего не сработало.

Обновление: я только недавно узнал о MATCH AGAINST, поэтому я не уверен, что "правильно" использовать его в моем случае. Как я уже сказал, у меня есть таблица со столбцом с именем description, используя приведенное выше в качестве примера слово assists, которое встречается в таблице несколько раз, я бы использовал этот запрос:

SELECT * FROM challenges WHERE MATCH(description) AGAINST('assists')

Я только что выполнил это, и он вернул 10 строк. Если я изменю его на assist, я ничего не получу.


person HaLo2FrEeEk    schedule 30.04.2011    source источник
comment
какой режим MATCH AGAINST вы используете? естественный язык?   -  person jon_darkstar    schedule 30.04.2011
comment
Я добавил больше информации в пост.   -  person HaLo2FrEeEk    schedule 01.05.2011


Ответы (2)


Возможно, вы можете использовать функцию SOUNDEX() из MySQL.

SELECT
  id,
  title
FROM products AS p
WHERE p.title SOUNDS LIKE 'Shaw'

// This wil match 'Saw' etc.

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

person Tom Claus    schedule 30.04.2011
comment
Я попробовал это с этим запросом: SELECT * FROM challenges WHERE description SOUNDS LIKE 'assist' и ничего не получил, я изменил его на assists и все равно ничего не получил. - person HaLo2FrEeEk; 01.05.2011
comment
Я проверил это для вас, и нормальные «ассисты» и «ассисты» имеют пришедший Soundex. Так что их надо найти по запросу. Вы можете проверить свой Soundex на этом сайте: searchforancestors.com/soundex.html - person Tom Claus; 02.05.2011
comment
Хорошо, но я говорю вам, что я выполнил запрос, который я описал в своем предыдущем комментарии. Я получил 0 результатов как для слова Assist, так и для Assess. - person HaLo2FrEeEk; 03.05.2011

Возможно, я упускаю из виду то, что вы пытаетесь сделать, но почему бы просто не выполнить соответствие LIKE следующим образом:

SELECT * FROM challenges WHERE description LIKE "%assist%";

Это будет соответствовать всему, что содержит «assist», а также «assists». Конечно, это также будет соответствовать «помощнику» и «помощи», что может быть не тем, что вы хотите...

person Ben    schedule 01.05.2011
comment
Да, это не совсем то, что я ищу. Как вы сказали, это будет соответствовать любому слову, которое также содержит поисковый запрос, например, если бы я искал чтение, он вернул бы нить, хлеб и т. Д. - person HaLo2FrEeEk; 02.05.2011