在一些类似于文章博客的内容中,会用到模糊搜索检索多个字段,对于检索后的结果排序可能并不满意。
例如:
在CSDN搜索一篇博文,在输入关键字后会检索文章的标题,内容,分类,标签等内容,但是检索的排序结果可能不太理想,比如想优先显示标题中带有此关键字的文章,不管是按主键或者时间排序都是不行的。
下面我就简单的说明一下遇到这种问题的几种解决办法:
利用LOCATE函数(MySQL数据库),按照匹配度进行排序。
locate(subStr,string) 函数返回subStr在string中出现的位置,返回结果大于0代表着subStr出现的位置(从开始就存在则为1,即如果string中存在subStr最小值为1),如果等于0则说明subStr不存在。
检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据:
SELECT `name`,`memo`,locate('shx',`name`) as `order_name` FROM `cs_user` where `name` like "%shx%" or `memo` like "%shx%" order by `order_name` desc
检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据,如果`name`字段中'shx'信息出现的位置相同或者都不存在,即`order_name`为0时,则优先显示`memo`字段中存在'shx'信息并且出现位置靠前的数据:
SELECT `name`,`memo`,locate('shx',`name`) as `order_name`,locate('shx',`memo`) as `order_memo` FROM `cs_user`where `name` like "%shx%" or `memo` like "%shx%" order by `order_name` desc,`order_memo` desc
等待更新
如果帮助到你,请赏杯奶茶喝~
- 本文链接: https://www.shx1024.top//index/article/details/article_id/15.shtml
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。