如何根据关键字匹配度排序「建议收藏」

如何根据关键字匹配度排序「建议收藏」最近项目遇到根据关键字匹配度排序,要求关键字匹配相等排在第一,关键字匹配最左边排第二,关键字匹配最右边排第三,关键字匹配中间排最后;遇到这样查询排序场景,用MySQL如何实现?用搜索引擎Elastic

最近项目遇到根据关键字匹配度排序,要求关键字匹配相等排在第一,关键字匹配最左边排第二,关键字匹配最右边排第三,关键字匹配中间排最后;遇到这样查询排序场景,用MySQL如何实现?用搜索引擎Elasticsearch如何实现?

方法一:按照上面需求用联合查询,可以实现方案,但是当数据量很大时,联合查询效率并不太好,不是最佳方案

select id,name from
(
select id,name from title where name like “海阔天空%” ORDER BY name asc
) as c1
UNION
select id,name from
(select id,name from title where name like “%海阔天空” ORDER BY name asc
) as c2
UNION
select id,name from
(select id,name from title where name like “%海阔天空%” ORDER BY name asc
) as c3
LIMIT 0, 10;

如何根据关键字匹配度排序「建议收藏」

 

 

 

方法二: 部分实现方案,查询效率比联合查询稍微好些。

select id,name from channel where name like “%海阔天空%” order by replace(name, “海阔天空”,””) asc limit 0,10;

如何根据关键字匹配度排序「建议收藏」

 

 

方法三:用搜索引擎Elasticsearch match方法,是最佳方案。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10603.html

(0)
上一篇 2022-12-24
下一篇 2022-12-24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注