有两个表
1.书籍表
book_id
2.标签表
tag_id
3.书籍,标签关系表
book_id,tag_id
可以很简单地实现相关书籍的查找,但是根据“有相同标签就是相关书籍”的话忽略了相关度。比如三个标签相同的书籍比一个标签相同的书籍明显相关度更高。
想请教,如何实现按照相关度高低排序?有没有相关算法?
SELECT *,
CASE
WHEN tag_id IN (tags1) THEN 1
WHEN tag_id IN (tags2) THEN 2
WHEN tag_id IN (tags3) THEN 3
END as r
FROM relations
WHERE tag_id IN (tags3)
ORDER BY r;
事先算好
tag只是相关度的一个feature,计算时也要考虑其他因素。
正文完