私の Rails プロジェクトには、次の 2 つのモデルがあります。
class Student < ActiveRecord::Base
attr_accessible :name
has_many :homeworks
...
end
class Homework < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
attr_accessible :grade
belongs_to :student
...
end
物事のelasticsearch側でクエリを実行したい:
- 宿題の成績が少なくとも 1 つ「F」の生徒をすべて見つけます。
- 生徒を並べ替える
- 「F」と評価された宿題の数による
- 名前で
- 学生のページ付け
この単純化された例は、elasticsearch を使用しなくても解決できますが、私が取り組んでいるプロジェクトには、elasticsearch を必要とする全文検索機能があります。
私は次のアプローチを試しました:
- 親オブジェクトの属性を子オブジェクト内に格納し、ファセットを使用してグループ化します。これは機能しているようですが、ここで説明されているように結果をページ付けできません: http://bit.ly/10hyYoS
- ネストされたドキュメントの使用。私の検索クエリは、フィルタリングされた学生とフィルタリングされていない宿題をすべて返しますが、検索結果で子供をフィルタリングする方法がわかりません。
これらのモデルをelasticsearchにマップし、クエリを効率的に実行する方法についてアドバイスをいただければ幸いです。
完全な解決策を求めるのではなく、一般的な方向感覚を求めるだけです。ネストされたオブジェクトを使用する必要がありますか? 生徒の属性を宿題に保存し、グループ化にファセットを使用しますか?
前もって感謝します!