排序布尔全文搜索在MySQL中的相关性,解释?

我一直在寻找资源来解释这个查询如何根据相关性对检索到的项目进行完全排序,并且一直未能找到任何。 希望你们中的一个能向我解释它的后勤?

SELECT *, MATCH(body, subject) AGAINST ('words' IN BOOLEAN MODE) AS relevance 
FROM `messages`
WHERE MATCH(body, subject) AGAINST ('words' IN BOOLEAN MODE)
ORDER BY relevance DESC

在这种情况下,我知道该查询的前半部分通过messages.body和messages.subject列搜索搜索词“words”。 然后它返回那些结果,(不管布尔运算符)什么是必要的“随机顺序”(由先找到的东西排序,然后找到第二个,依此类推)。

然而,我不明白的是MySQL如何解释WHERE子句和查询的其余部分。 重复前半段代码如何重新排序结果的相关性?

例如,一个按desc排序users.user_id列的ORDER BY子句。 数字顺序对我来说是SENSE,因为每行/单元格都有一个明确的顺序(例如 - 3,2,1等等)

但是(返回原始查询)MySQL如何解释这些“单词”结果(单词,显然没有任何值/数字/明确顺序)并根据相关性对它们进行排序?

是否因为布尔全文搜索为这些搜索项提供隐藏数值? 就像AGAINST条款是这样的:

AGAINST ('+apple -macintosh ~microsoft >windows' IN BOOLEAN MODE)

像“苹果”获得100的值,“麦金托什”的值为-100,“微软”的值为20,“窗口”的值为40(以反映运营商效应)?

我知道这只是简单化了这个过程(特别是在考虑一个列是否包含多个这些搜索词时),但这是我得到的最好的结果。


我基本需要的是对WHERE子句(查询代码的后半部分)作为整体对查询结果的影响的外行解释。

链接地址: http://www.djcxy.com/p/75295.html

上一篇: Sorting Boolean Fulltext Searches by Relevance in MySQL, Explained?

下一篇: MySQL Fulltext Boolean Mode search returns too many results