搜索功能完善,mysql实现多个关键词的搜索,按相关性排序,以及搜多个字段的方法

需求:

用户通过以空格分隔的多个关键词进行一次搜索,得到多个关键词都有或只有其中之一的数据,以关键词命中个数排序

解决思路:

  1. 最后要得到一个id,countn的表A,countn是命中关键词数,left join此表后以countn进行排序即可;
  2. 表A的获取方法需要单独搜每个关键词,把结果通过union all整合,然后再count(id) group by id;

实现方法:

select * from ccms_content as c 
left join (
    select DISTINCT id,count(id) as countn from (
        (select id from ccms_content where title like '%keyword1%') 
        union all 
        (select id from ccms_content where title like '%keyword2%') 
    ) as j group by id
) as a using(id) 
where countn>0 
order by countn desc

附上同时搜索多个字段的简单方法:

譬如搜索title和keyword字段,

where title like 换成 where CONCAT(title,keyword) like

CONCAT 是MYSQL的字符串连接函数

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏