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)
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,非布尔模式返回一个十进制结果,但只能应用于索引列...另请参见此处.