Mysql全文帮助

时间:2009-12-09 17:01:49

标签: php sql mysql

我用它来搜索我的表:

  if ($querystring!=''){$query_cont .= " AND MATCH (headline) AGAINST ('$querystring')"; }

事实上,在'标题'字段中,我有一个值'宝马'。然后当我在搜索栏中输入BMW时,即“$ querystring ='BMW'”,没有找到结果。

我已将'headline'字段的索引设置为'fulltext',并使用简单的'INSERT INTO'语句将值插入该表。

请帮我解决这个问题......

如果您需要更多输入,请告诉我们!

3 个答案:

答案 0 :(得分:3)

将您的ft_min_word_len更改为3或更低,然后重建您的索引。

短于ft_min_word_len(默认情况下为4)的字词不会被编入索引。

<强>更新

将这个强制性的 XKCD 漫画与包含像你这样的代码的问题挂钩,这被认为是一个好习惯:

答案 1 :(得分:2)

你必须知道两件事:

我怀疑其中一件事阻止你得到你期望的结果。

另外,请确保您的应用程序不受Sql injections

的保护

答案 2 :(得分:2)

MySQL的全文索引器默认忽略三个字母的单词。要将3个字母的单词编入索引,您需要更改ft_min_word_len配置并重新索引列(有关更多信息,请参阅this question;还有比您预期更多的停用词)。

(您还需要使用mysql_real_escape_string或参数化查询来阻止上述代码成为SQL注入漏洞。)