我目前正尝试使用PHP在我的MySQL表格(文本类型)中搜索2个字段。
SELECT * FROM content_items WHERE MATCH (content,name) AGAINST ('".urldecode($_REQUEST['term'])."' IN BOOLEAN MODE)
我总是得到零结果,无论我搜索什么(甚至试图使查询静态但它仍然无效)。我在这两个字段都有全文索引。
导致这种情况的原因是什么?
谢谢,
罗伊
P.S
搜索应适合任何长度的刺痛(即使是短刺激)
答案 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)
这是索引的问题。重建它们解决了这个问题。