小编dac*_*nts的帖子

从 UNIFIED QUERY not FOR EACH TABLE 计算 MATCH() AGAINST() 分数

我正在尝试为整个 SELECT 语句部分打分

SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
UNION
SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
UNION
SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,分数是按表计算的 + 它们不是按相关性排序的

但我试过这种方法,它有效但不值得生产

SELECT * FROM (
    SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword')
    UNION
    SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword')
    UNION
    SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword')
) as `combined` ORDER BY …
Run Code Online (Sandbox Code Playgroud)

mysql full-text-search php

10
推荐指数
1
解决办法
1709
查看次数

标签 统计

full-text-search ×1

mysql ×1

php ×1