如何索引标签组合



我的项目:

  • 帖子有许多标签。
  • 基于标签组合,将帖子放置在适当的类别中。例如,只有#Politics标签的帖子应转到"一般政治"部分,并具有标签#Politics和#global的帖子将转到"全球政治"部分
  • 表"类别"存储了类别和标签的组合,这些标签将接受。
  • 这些标签不是帖子包含的唯一标签。

我的问题是:是存储和索引标签的最佳(和经济)方法是什么,以便系统也可以轻松拾取标签组合。目前,我将标签存储在"帖子"表中的"标签"列中。

该项目基于ROR 3.2和SQLITE3。

使用acts_as_taggable_on GEM,您可以轻松地查询使用多个标签的对象:

matching_categories = @post.find_related_tags_for(Category)

结果列表是通过减少匹配数量来排序的,第一个可能是您要分配给帖子的列表。

最简单,可能是最快的方法是通过在 posts> posts> posts 模型上使用 searchkick,然后在其中包含一个标签列表搜索数据。

  1. 下载并安装Elasticsearch。您需要安装JDK才能正常工作。
  2. 安装Searckick Gem。
  3. 将其添加到您的post模型:

    class Post<<ActiveRecord::Base
     attr_accessible :title , :body         
     has_many :tags
     searchkick
    def search_data
      attributes.merge(tags: self.tags.map(&:name))
    end
    

    假设您将另一种tag模型与:name属性

  4. 要对标签组合进行查询,只需:

    Post.search("tag1,tag2",fields:[:tags])
    

    这些查询非常快,可以自信地合并此逻辑以构建导航结构。

另请参阅:Searckick Facets

最新更新