カテゴリに属する製品があります。また、カテゴリは、自己結合を使用して親と子を持つことでツリー構造を構成します。
協会:
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 インデックス作成でメソッドを使用できないことはわかっていますが、データベースをセットアップするにはどうすればよいですか?
最も重要なことは、「高」カテゴリ名をどのように索引付けするのですか?