如何计算"置信水平" MySQL FULLTEXT索引查询返回的结果?

时间:2018-05-04 05:32:47

标签: mysql indexing full-text-search

假设您在MySQL数据库表的列上定义了FULLTEXT索引,以允许进行自然语言搜索。如果您现在使用MATCH()和AGAINST()运行查询,则可以检索" rank"搜索结果,如下所述:

https://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html

例如:

mysql> SELECT id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root'
IN NATURAL LANGUAGE MODE) AS score
FROM articles WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root'
IN NATURAL LANGUAGE MODE);
+----+-------------------------------------+-----------------+
| id | body                                | score           |
+----+-------------------------------------+-----------------+
|  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
|  6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)

问题是MATCH()返回一些浮点数但没有上限。我需要得出一个"置信因子"每个结果行的百分比为0到100.例如,特定行的置信因子为95%意味着它很可能正是用户正在搜索的内容。相反,如果置信因子很低,那么它就像10%。

请注意,这不是从MATCH()中选择大分数并将其设置为100的问题。得分最高的行可能仍然不是用户正在搜索的内容...所以也许使用MATCH ()不会工作,但是,请你建议一些方法来计算这样一个"置信因子"?

提前非常感谢。

0 个答案:

没有答案