一个文章有多个标签,根据这些标签找出相似度高的其他文章,SQL句子当时这么整,留做记录。
2018-01-25 10:20
302 查看
表: table
id title content labels
1 aa bbb-cc 1,2,3,4,5
2 bb aa-c-d 2,4,5,6,7
3 cc xxxxxx 2,3,4,5,6
4 dd yyyyyy 4,5,6,7,8
假如现在显示的是ID为1的那条,那么 需要找出 labels 里面相似度最高的几条数据,当时的句子如下:
SELECT
id,
((if(find_in_set('1',`labels`),1,0)) +
(if(find_in_set('2',`labels`),1,0)) +
(if(find_in_set('3',`labels`),1,0)) +
(if(find_in_set('4',`labels`),1,0)) +
(if(find_in_set('5',`labels`),1,0))) as e,
labels
FROM
`table`
WHERE
find_in_set('1',`labels`) OR
find_in_set('2',`labels`) OR
find_in_set('3',`labels`) OR
find_in_set('4',`labels`) OR
find_in_set('5',`labels`)
ORDER BY
e Desc
LIMIT 10
虽然这个句子的执行效率不好,但最少拿出了我想要的数据了。
id title content labels
1 aa bbb-cc 1,2,3,4,5
2 bb aa-c-d 2,4,5,6,7
3 cc xxxxxx 2,3,4,5,6
4 dd yyyyyy 4,5,6,7,8
假如现在显示的是ID为1的那条,那么 需要找出 labels 里面相似度最高的几条数据,当时的句子如下:
SELECT
id,
((if(find_in_set('1',`labels`),1,0)) +
(if(find_in_set('2',`labels`),1,0)) +
(if(find_in_set('3',`labels`),1,0)) +
(if(find_in_set('4',`labels`),1,0)) +
(if(find_in_set('5',`labels`),1,0))) as e,
labels
FROM
`table`
WHERE
find_in_set('1',`labels`) OR
find_in_set('2',`labels`) OR
find_in_set('3',`labels`) OR
find_in_set('4',`labels`) OR
find_in_set('5',`labels`)
ORDER BY
e Desc
LIMIT 10
虽然这个句子的执行效率不好,但最少拿出了我想要的数据了。
相关文章推荐
- LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最
- 根据某个字段将多条记录的某个字段拼接成一个字段(SQL查询)
- SQL找出和删除一个表的重复记录
- SQL 找出一个表中各个分类的前三条记录
- sql删除一个表中除了编号以外其他字段都相同的冗余记录
- SQL Server over和CTE的妙用(子记录根据外键递归找出父记录,并实现层级关系码)
- mysql根据标签查询文章相似度
- jquery如何书写一个根据下拉选择列表的选择值 控制其他标签时候显示的功能
- 将根据字符查询转换后输出结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
- SQL:找出我(uid=2)所有的好友信息,和这些好友发布的最新的一篇文章
- 一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出
- 一个小sql的问题记录 对分析函数的应用
- 【面试题目】你有12个硬币,其中有一个的重量与其他的不一样,有三次使用测量平衡的机会来找出重量不同的那个。该怎么做呢?
- 根据当前记录获取前一条与下一条记录常用 sql语句
- 一个根据.BOM文件自动创建Excel BOM的程序---记录在此,以便查询
- 笔记-xml-xsd:xsd中根据一个元素约束其他元素(不可行)
- 从数组中找出一对元素,其和是一个给定的目标数字。假设数组中只存在一个符合要求的数值对,返回这些数值的下标
- 一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL。
- 给定一个字符串列表,找出单词中最长单词,可以用l列表中的其他单词一次构建一个字符。返回具有最小字典顺序的最长单词。
- 12个球找出其中一个质量不同的球,并指出该球是比其他球轻还是重