在mysql标记系统中显示最佳匹配

在mysql标记系统中显示最佳匹配,mysql,function,tags,Mysql,Function,Tags,我正在实现一个系统,该系统根据用户插入的标记返回可用文章的列表,以便用户发现符合(或松散地符合)其标准的项目。返回的项目将根据用户感兴趣的可能性进行排序。前端收集标记并在mySQL查询中使用它们(我在这里询问hel) my DB具有以下结构: 标记(标记id、标记名称) 文章(文章id,部分文字) 物品标签(物品id、标签名称) 例如: 用户输入标签:“硬”、“甜”、“红”。mySQL将按以下顺序返回这些项目: 红色糖果(标签为硬的,红色,甜的)-3/3标签匹配 红色锤子(标记为坚硬,红色,

我正在实现一个系统,该系统根据用户插入的标记返回可用文章的列表,以便用户发现符合(或松散地符合)其标准的项目。返回的项目将根据用户感兴趣的可能性进行排序。前端收集标记并在mySQL查询中使用它们(我在这里询问hel)

my DB具有以下结构:

  • 标记(标记id、标记名称)
  • 文章(文章id,部分文字)
  • 物品标签(物品id、标签名称)
例如:

用户输入标签:“硬”、“甜”、“红”。mySQL将按以下顺序返回这些项目:

  • 红色糖果(标签为硬的红色甜的)-3/3标签匹配
  • 红色锤子(标记为坚硬红色,危险)-因此2/3标记匹配
  • 石头(标记为,灰色)-因此1/3的标记匹配
  • 枕头(标签为柔软的白色)-0/3标签匹配
  • 谢谢大家 AC

    像这样:

    select 
      distinct some_text 
    from 
      articles join article_tags on (articles.article_id = articles_tags.article_id ) 
      join tags on (articles_tags.tag_id =  tags.tag_id) 
    where 
      tag_name in ("hard", "sweet", "red") 
    order by count(tag_id) DESC;
    

    gbejic的答案是完美的。 我开始编写计算分数的函数,但这是非常直观和直接的。 谢谢 交流电