Как мне искать полный текст с частичными совпадениями? - PullRequest
0 голосов
/ 09 марта 2012

У меня есть таблица, в которой не много строк и не много столбцов.Я выполняю полнотекстовый поиск по 3 столбцам.

Мой код

$search_input = trim($_GET['s']);
$search = mysql_real_escape_string($search_input);
$search = '+'.str_replace(' ', '* +', $search).'*';

$sql = "SELECT * FROM table WHERE   
        MATCH(def, pqr, xyz) AGAINST ('$search' IN BOOLEAN MODE)";

$result = mysql_query($sql);

Я могу правильно искать такие термины, как abcdefgh , которые представлены как ... abcdefgh ... .

Но я получаю пустой набор с поисковыми терминами типа abc , где в записи таблицы присутствует что-то вроде abc-123, а также такие термины, как abcdefghs .(обратите внимание, что это множественное число выше)

Ясно, что мне нужно реализовать частичный поиск или что-то в этом роде.
Но как мне реализовать такой поиск?Есть ли лучший способ выполнить поиск по всей таблице при вводе данных пользователем?

Укажите, что я делаю неправильно.

РЕДАКТИРОВАТЬ : добавив * после каждого слова, теперь яЯ также могу искать abcde , но выше проблемы остаются.

1 Ответ

1 голос
/ 09 марта 2012

Вы имеете в виду, что вы не получаете результаты для трехбуквенных комбинаций? Если это так, возможно, вы достигли длины индекса mysql (обычно равной 3)

Подробнее здесь - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

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