MySQL:为什么得分总是1全文?

Ada*_*dam 3 mysql full-text-search relevance

如果我运行此查询并打印每行的分数,它们始终为1:

以下是一些示例查询结果:

First     |  Last     | Score
------------------------------
Jonathan  |  Bush     | 1
Joshua    |  Gilbert  | 1
Jon       |  Jonas    | 1
Run Code Online (Sandbox Code Playgroud)

这是我运行的查询:

SELECT First, Last, MATCH(First, Last) AGAINST ('Jon' IN BOOLEAN MODE) AS score 
FROM users 
WHERE MATCH(First, Last) AGAINST('Jon' IN BOOLEAN MODE)
ORDER BY score DESC;
Run Code Online (Sandbox Code Playgroud)

str*_*rry 5

BOOLEAN MODE仅支持二进制答案,无论搜索字符串是否出现在列中,均表示0或1.要获得十进制结果来计算权重,您必须在索引列上使用匹配.

您可以通过这种方式使用布尔模式来获取您的方法:

SELECT *, ((1.3 * (MATCH(column1) AGAINST ('query' IN BOOLEAN MODE))) +
(0.6 * (MATCH(column2) AGAINST ('query' IN BOOLEAN MODE)))) AS relevance
FROM table WHERE ( MATCH(column1,column2) AGAINST
('query' IN BOOLEAN MODE) ) ORDER BY relevance DESC
Run Code Online (Sandbox Code Playgroud)

布尔模式的优点是你可以在非索引列上使用它,但结果只有0,1,非布尔模式返回一个十进制结果,但只能应用于索引列...另请参见此处.