1

我有属于某个类别的产品。类别通过使用自连接的父子节点构成树结构:

协会:

class Category < ActiveRecord::Base
  has_many :children, class_name: "Category", foreign_key: "parent_id"
  belongs_to :parent, class_name: "Category"
end

class Product < ActiveRecord::Base
  belongs_to :category
end

例如,

Fruits & Vegetables     =>    "High" Category 
Fresh Fruits            =>    "Intermediate" Category
Citrus                  =>    "Low" Category
Limes Large             =>    Product

我想使用 Thinking Sphinx 来索引产品的“低”类别名称和“高”类别名称,甚至可能是树层次结构中的所有类别名称。

我可以轻松索引低类别父名称,如下所示:

class Product < ActiveRecord::Base
  indexes :name
  indexes category.parent.name, as: :low_category
end

注意:“高”和“低”类别之间的节点数是可变的。我需要一种动态添加分层名称的方法。

但是如何在树中进一步索引类别名称呢?我知道我不能在 TS 索引中使用方法,那么我该如何设置数据库呢?

最重要的是,如何索引“高”类别名称?

4

1 回答 1

1

你能做这个吗 ?

class Product < ActiveRecord::Base
  indexes :name

  category = category.parent
  indexes category.name, as: :low_category

  while category.parent do
    if category.parent
      indexes category.name, as: :root_category
    elsif category.parent
      indexes category.name, as: :high_category
    else
      indexes category.name
    end

    category = category.parent
  end
end
于 2012-08-07T18:36:30.667 回答