Полнотекстовый поиск в MySQL и PHP не работает - PullRequest
1 голос
/ 25 марта 2009

В настоящее время я пытаюсь выполнить поиск по 2 полям в моей таблице MySQL (текстовый тип) с использованием PHP.

SELECT  * FROM content_items WHERE MATCH (content,name) AGAINST ('".urldecode($_REQUEST['term'])."' IN BOOLEAN MODE)

Я всегда получаю ноль результатов, независимо от того, что я ищу (даже пытался сделать запрос статичным, но он все еще не работал). У меня полнотекстовые индексы в обоих полях.

Что может вызвать это?

Спасибо

Roy

p.s

Поиск должен соответствовать любой длине укуса (даже короткой)

Ответы [ 3 ]

3 голосов
/ 26 марта 2009

SQL-заявление имеет смысл. Я думаю, что проблема заключается здесь:

urldecode($_REQUEST['term'])

В руководстве по PHP есть примечание относительно этого

Внимание

Суперглобальные $ _GET и $ _REQUEST уже расшифрованы. Использование urldecode () для элемента в $ _GET или $ _REQUEST мог быть неожиданным и опасным Результаты.

Приветствия

Mark

2 голосов
/ 27 марта 2009

(при условии, что ваш запрос не выдает ошибку)

Возможно, вы захотите проверить конфиги mysql, относящиеся к полнотекстовому поиску. Например, по умолчанию термины длиной до 4 символов не будут совпадать ни с чем

mysql> show variables like 'ft_%';
+--------------------------+----------------+
| Variable_name            | Value          |
+--------------------------+----------------+
| ft_boolean_syntax        | + -><()~*:""&| |
| ft_max_word_len          | 84             |
| ft_min_word_len          | 4              |
| ft_query_expansion_limit | 20             |
| ft_stopword_file         | (built-in)     |
+--------------------------+----------------+
5 rows in set (0.00 sec)
1 голос
/ 29 марта 2009

Это была проблема с индексами. Восстановление их решило это.

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