MySQL相关性搜索基于字段中的单词数

时间:2012-08-26 18:42:51

标签: php mysql

1 MySQL
2 PHP and MySQL
3 PHP MySQL Database Search

这是我表格中的三行。在应用搜索关键字的“php mysql数据库”时,它应该从第3行开始按3-2-1的顺序显示结果,因为其中包含所有3个关键字。

我尝试了这段代码,但它只显示了所有三个结果,但不按我想要的顺序显示。

SELECT data,
MATCH(data) AGAINST('PHP MySQL Database' IN BOOLEAN MODE) AS score
FROM table
WHERE MATCH(data) AGAINST('PHP MySQL Database' IN BOOLEAN MODE) ORDER BY score DESC;

1 个答案:

答案 0 :(得分:2)

比较the docs for boolean modenatural language mode

  

布尔值:布尔全文搜索具有以下特征:    它们不会按相关性降低的顺序自动对行进行排序。

     

自然语言:在WHERE子句中使用MATCH()时,如前面所示的示例,返回的行将首先自动排序,具有最高的相关性。

所以我的建议是使用自然语言模式,只是省略了明确的排序条款。

关于默认设置的注意事项

引用上面链接的文档:

  

全文搜索中会忽略某些字词:

     

任何太短的单词都会被忽略。通过全文搜索找到的默认最小单词长度为四个字符。

     

可以按照12.9.6, “Fine-Tuning MySQL Full-Text Search部分所述更改默认的最小字长和停用词列表。

从链接到的页面:

  

例如,如果您想要搜索三个字符的单词,可以通过将以下行放在选项文件中来设置ft_min_word_len变量:

[mysqld]
ft_min_word_len=3