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

这个如何实现?

阅读 1.9k
3 个回答

使用es,加大title搜索权重

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题