PHP / MYSQL - нужен лучший способ выполнить этот поисковый запрос FULLTEXT - PullRequest
0 голосов
/ 26 августа 2011

В настоящее время я занят созданием функции поиска, которая запрашивает строку ввода пользователя по определенной строке в таблице mysql.

Вот как выглядит код:

$space_separated = implode(" ", $keywords_array);

$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
              FROM products
              WHERE MATCH (`desc`)
              AGAINST ('".$space_separated."' IN BOOLEAN MODE)";

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

Примером этого может быть, если пользователь ищет «шоколад» и ищет «olate», совпадение не возвращается. Как бы мне обойти это?

@ Mark

Вы предлагали это?

$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
              FROM products
              WHERE MATCH (`desc`)
              AGAINST ('".$space_separated."' IN BOOLEAN MODE)
              OR MATCH (`desc`)
              AGAINST ('".$space_separated."')";

1 Ответ

1 голос
/ 26 августа 2011

FULLTEXT искал только целые слова. Вы можете указать подстановочный знак * за частью слова, но не раньше. Так что choco* будет соответствовать chocolate', but* olate` не будет.

Кроме того, для сопоставления по умолчанию используется or для сравнения. Если вы хотите сопоставить все ключевые слова, добавьте + перед каждым ключевым словом.

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