从MySQL数据库中提取类似项的最佳方法

从MySQL数据库中提取类似项的最佳方法,mysql,similarity,Mysql,Similarity,我有一个项目数据库(关于这个问题的文章)。 我想做的是,我想根据两件事提取与特定项目类似的X个项目-标题,这是文章的标题,以及位于另一个表中的标记 结构如下(仅限相关字段): 表:文章 字段:articleid,title 表:标签 字段:tagid、tagtext 表:articletag 字段:tagid,articleid 最好的方法是什么?对于myisam表,您可以使用自然语言全文搜索: 您还可以考虑将有关标签的冗余信息添加到文章表中的一个字段(例如,)中,并在每次添加/删除标签时对其

我有一个项目数据库(关于这个问题的文章)。
我想做的是,我想根据两件事提取与特定项目类似的X个项目-标题,这是文章的标题,以及位于另一个表中的标记

结构如下(仅限相关字段):

表:文章
字段:articleid,title

表:标签
字段:tagid、tagtext

表:articletag
字段:tagid,articleid


最好的方法是什么?

对于myisam表,您可以使用自然语言全文搜索:

您还可以考虑将有关标签的冗余信息添加到文章表中的一个字段(例如,
)中,并在每次添加/删除标签时对其进行更新。这将简化查询,并且应该更快:

SELECT * FROM article a
WHERE MATCH (a.title, a.tagtext) AGAINST ('some title or tag' IN NATURAL LANGUAGE MODE)

你将不得不对你认为“相似”的Derek Kromm相似的项目给出更具体的解释,它具有类似的标题(我正在思考匹配,然后按顺序排序)和匹配的标签(显然不是必需的)。另外,我也在寻找类似的项目。您需要根据原始标记列表中的字符串构造
SELECT * FROM article a
WHERE MATCH (a.title, a.tagtext) AGAINST ('some title or tag' IN NATURAL LANGUAGE MODE)