我有一个表,story_keywords,其中包含与特定故事相匹配的关键字,其中包含以下列:id,story_id,keyword_id。
现在我要做的就是抓住任何与至少两个关键词共享的故事,我将从今天获取所有故事的初始循环中输出主要故事。
//获取关键字_id列表 主要故事
//获取所有故事的列表,以及他们的故事 keyword_ids,在我循环时匹配 通过主要故事keyword_ids
但是我被卡住了,出于某种原因我无法从逻辑上考虑这一点。有人可以提供建议吗?我不确定我能提供哪些其他信息以使其更清楚。
我可以从主要故事中获得与1个关键字匹配的故事列表,但我希望它匹配至少两个关键字以输出相似的故事。
答案 0 :(得分:2)
您可以使用keyword_id IN(...)
子句查找与您的主要故事共享任何相同关键字的故事。要查找具有最高相关性的相关故事,您只需按关键字匹配数按降序对结果进行排序。
某些大致喜欢:
SELECT story_id, COUNT(story_id) AS relevancy
FROM story_keywords
WHERE keyword_id IN (...)
GROUP BY story_id
HAVING relevancy > 2
ORDER BY relevancy DESC
LIMIT 5
您可能还想添加另一个WHERE
子句以排除原始story_id
。