Php 如何根据关键字匹配找到相似的故事?

Php 如何根据关键字匹配找到相似的故事?,php,mysql,Php,Mysql,我有一个表,story_keywords,其中包含与特定故事匹配的关键字,并具有以下列:id、story_id、keyword_id 现在,我想做的是抓取任何与我从获取今天所有故事的初始循环中输出的主要故事共享至少两个关键字的故事 //获取的关键字\u ID列表 主要故事 //获取所有故事的列表,以及它们的 关键字_id,在我循环时匹配 通过主故事关键字\u id 但我被卡住了,因为某种原因,我无法从逻辑上思考这个问题。有人能提供建议吗?我不确定我还能提供什么其他信息来更清楚地说明这一点 我可以

我有一个表,story_keywords,其中包含与特定故事匹配的关键字,并具有以下列:id、story_id、keyword_id

现在,我想做的是抓取任何与我从获取今天所有故事的初始循环中输出的主要故事共享至少两个关键字的故事

//获取的关键字\u ID列表 主要故事

//获取所有故事的列表,以及它们的 关键字_id,在我循环时匹配 通过主故事关键字\u id

但我被卡住了,因为某种原因,我无法从逻辑上思考这个问题。有人能提供建议吗?我不确定我还能提供什么其他信息来更清楚地说明这一点


我可以从主故事中获得与1个关键字匹配的故事列表,但我希望它至少与两个关键字匹配,以便输出类似的故事

您可以在(…)子句中使用
关键字\u id来查找与您的主要故事共享任何相同关键字的故事。要找到相关性最高的相关故事,只需按关键字点击次数降序排列结果

大致如下:


您可能还想添加另一个
WHERE
子句以排除原始
故事\u id

而不是从主要故事中迭代关键字\u id,只需将它们内爆(',',$id\u数组)到一个字符串中,如上面的IN(…)子句所示。您还需要执行一些基本的错误检查,例如确保$ids\u数组在您内爆之前不为空。谢谢!!乍一看,它实际上运行得很好。也谢谢你的额外提示。。。也许可以在几个小时内为我节省一些时间:)当然可以!很高兴我能帮忙。:)
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