mysql搜索匹配,如何按照搜索字段排序?详细描述看内容

现在有一个搜索sql:
select * from xxx where title like '%zzz%' or details like '%zzz%'

即搜索出title和details中包含zzz的条目。
例如结果为

id   title   details
1    xxx     xxx zzz yyy
2    zzzy    xxxxxxxxx
3    ffff    zzzyy

现在有个需求,就是要加入个排序。也就是按照title搜索到的结果排在前面(优先),按照details搜索到的结果排在后面,即

id   title   details
2    zzzy    xxxxxxxxx
1    xxx     xxx zzz yyy
3    ffff    zzzyy

这个如何实现?

阅读 2.1k
3 个回答

使用es,加大title搜索权重

看到 '%zzz%' 就不用说啥了,数据量大一点性能都差的不行
除非你数据量真的很小,否则考虑用es之类的搜索引擎实现相关业务

个人建议你使用es来进行专业的搜索引擎,你直接用mysql性能和扩展性都有影响

推荐问题