如何计算;“信心水平”;MySQL全文索引查询返回的结果的数量?

如何计算;“信心水平”;MySQL全文索引查询返回的结果的数量?,mysql,indexing,full-text-search,Mysql,Indexing,Full Text Search,假设您在MySQL数据库表中的一列上定义了全文索引,以允许自然语言搜索。如果现在使用MATCH()和country()运行查询,则可以检索搜索结果的“排名”,如下所述: 例如: mysql> SELECT id, body, MATCH (title,body) AGAINST ('Security implications of running MySQL as root' IN NATURAL LANGUAGE MODE) AS score FROM articles WHERE M

假设您在MySQL数据库表中的一列上定义了全文索引,以允许自然语言搜索。如果现在使用MATCH()和country()运行查询,则可以检索搜索结果的“排名”,如下所述:

例如:

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()中选择larges分数并将其设置为100的问题。得分最高的行可能根本不是用户要搜索的行。。。所以,也许使用MATCH()不起作用,但是,您能建议一些方法来计算这样一个“置信因子”吗


非常感谢。

甚至谷歌都没有提供这样的价值,因为很难提供。如果你想要这样的东西,那么你必须忘记全文搜索,而需要拥抱自然语言处理和无监督机器学习等技术。你付出的代价将是“查询”的速度。谷歌确实没有提供这样的价值,但我仍然认为可以得出一个合理和有用的近似值。毕竟,索引使用的公式依赖于记录中的单词(词干/无停止词)出现频率、记录长度等因素。因此,考虑到分数分布,如果其中一个记录的分数最高,除了确认关键字确实经常出现在该记录中,那么该特定记录是否正确的可信度将相当高。但是您没有任何值可用于比较分数,因此无法将分数表示为百分比。