提问人:minami 提问时间:5/4/2022 最后编辑:minami 更新时间:5/4/2022 访问量:61
是否有更好的查询来获得最匹配的结果
Is there a better query to get most matched result
问:
我正在尝试使用 MATCH AGAINST 获得最匹配的结果。
我的第一个查询可以正常工作,但它使用文件排序。
第二个查询也运行良好,但查询重复且看起来很乱。
如何优化我的查询?
作为参考,索引列是 class_id 和 name。
*仅匹配查询
SELECT id, name, MATCH (name) AGAINST('john smi') AS score
FROM member
WHERE class_id=5
AND MATCH (name) AGAINST('john smi');
*我的第一个查询
SELECT * FROM (
SELECT id, name, MATCH (name) AGAINST('john smi') AS score, dense_rank() over (order by MATCH (name) AGAINST('john smi') desc) ranking
FROM member
WHERE class_id=5
AND MATCH (name) AGAINST('john smi')
)t where t.ranking = 1;
*第二次查询
SELECT id, name, MATCH (name) AGAINST('john smi') AS score
FROM member
WHERE class_id=5
AND MATCH (name) AGAINST('john smi') AND MATCH (name) AGAINST('john smi') >= (
SELECT MATCH (name) AGAINST('john smi')
FROM member
WHERE class_id=5
AND MATCH (name) AGAINST('john smi') limit 1
)l
答: 暂无答案
上一个:Mysql按相关性和标题排序
下一个:循环查询,直到找到结果
评论