关键字匹配度排序

概述

看到一些网站的某些功能,不由得就会去思考自己如何实现。最近,在逛电商时,看到一些标签关键字搜索。然后按照关键字查出结果。想到依据关键字匹配度进行查询展示。本文从最简单的sql语句方面着手实现关键字匹配搜索实现。

目标

sql语句实现关键字排序**

实现方式

使用instr函数,判断搜索条件是否包含关键字;出现一个累加。

实例

表mt_table需要根据name进行关键字匹配排序。关键字有mt,log等。

普通查询

1
SELECT id,name FROM mt_table ORDER BY id ASC;

依据关键字mt,log排序

1
2
3
4
5
6
SELECT id,name,cnt FROM (
SELECT *,SUM(
(case when instr(name,’mt’)>0 then 1 else 0 end)
+(case when instr(name,’log’)>0 then 1 else 0 end)
) as cnt FROM mt_table GROUP BY id) as temp
ORDER BY cnt desc ,id ASC;

关键字加权排序

如:包含mt权重10,log权重5。

1
2
3
4
5
6
SELECT id,name,cnt FROM (
SELECT *,SUM(
(case when instr(name,’mt’)>0 then 10 else 0 end)
+(case when instr(name,’log’)>0 then 5 else 0 end)
) as cnt FROM mt_table GROUP BY id) as temp
ORDER BY cnt desc ,id ASC;

待续…

Alan Zhang wechat
欢迎您扫一扫上面的微信公众号“补愚者说”,订阅我的博客!