MySQL和PHP中的全文搜索不起作用

时间:2009-03-25 15:57:34

标签: php mysql full-text-search

我目前正尝试使用PHP在我的MySQL表格(文本类型)中搜索2个字段。

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

我总是得到零结果,无论我搜索什么(甚至试图使查询静态但它仍然无效)。我在这两个字段都有全文索引。

导致这种情况的原因是什么?

谢谢,

罗伊

P.S

搜索应适合任何长度的刺痛(即使是短刺激)

3 个答案:

答案 0 :(得分:3)

sql语句很有意义。我认为问题在于:

urldecode($_REQUEST['term'])

PHP手册中有关于此

的说明
  

警告

     

superglobals $ _GET和$ _REQUEST   已被解码。使用urldecode()   在$ _GET或$ _REQUEST中的元素上   可能有意想不到的危险   结果

干杯,

标记

答案 1 :(得分:2)

(假设您的查询没有抛出错误)

您可能想要检查与全文搜索相关的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)

答案 2 :(得分:1)

这是索引的问题。重建它们解决了这个问题。