0

我正在尝试优化我网站上的搜索引擎。当前填充结果的 mySQL 查询工作正常,但实际上并不是那么好。例如,这些查询永远不会被选为搜索结果:“A&M”、“ESY”、“DVS”,尽管它们是数据库的一部分并存储在“名称”列中。但是,可以按预期找到诸如“存在”或“好莱坞设计”之类的搜索查询。

我想知道是否有办法修复下面的查询,以便更准确地填充结果,b/c 现在它遗漏了很多结果并且没有按预期工作。我很感激这方面的任何帮助。

这是我用来填充搜索结果的当前查询:

$results = mysql_query("SELECT keywords,name FROM files WHERE MATCH (keywords,name) AGAINST ('$searchfor')") or die(mysql_error());

4

1 回答 1

0

我认为您的问题与mysql默认的字长限制有关。egA&M不是一个词,而是两个(&被忽略)。通常,此限制 ( ft_min_word_len) 设置为 3。

在这个 mysql 手册中,您可以看到如何调整配置。设置ft_min_word_len为一: http ://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

重要的旁注:

  • 你必须重新索引你的全文索引,否则你的搜索不会改变。
  • 如果您使用庞大的数据集,请注意此更改可能会显着降低全文查询的速度。
于 2012-06-30T18:40:11.860 回答