1
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;
4

1 回答 1

2

比较布尔模式自然语言模式的文档:

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

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

所以我的建议是使用自然语言模式,简单地省略你的显式排序条款。

注意默认设置

引用上面链接的文档:

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

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

可以按照第12.9.6 节“微调 MySQL 全文搜索”中的说明更改默认的最小字长和停用词列表。

从链接到的页面:

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

[mysqld]
ft_min_word_len=3
于 2012-08-26T19:06:28.793 回答