python有多少个关键字排序_如何根据关键字匹配度排序

最近项目遇到根据关键字匹配度排序,要求关键字匹配相等排在第一,关键字匹配最左边排第二,关键字匹配最右边排第三,关键字匹配中间排最后;遇到这样查询排序场景,用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;

wAAACwAAAAAAQABAEACAkQBADs=

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

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

wAAACwAAAAAAQABAEACAkQBADs=

方法三:用搜索引擎Elasticsearch match方法,当数据量很大时,是最佳方案。

https://www.cnblogs.com/e10470252222/archive/2019/12/04/11985005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值