rails-app/data の検索エンジンのさまざまなオプションを検討しています。私はsunspot / solrを機能させることができ、現在ElasticSearchを代替手段として調査していますが、ESで同じこと(スコープ/フィルタリング)を機能させることができませんでした。
「 https://github.com/sunspot/sunspot 」の「スコープ」セクションで説明されているように、オブジェクトをフィルター/スコープしたいと思います。
アクティブなレコード クラス 'Product' があります。
class Product < ActiveRecord::Base
...
include Tire::Model::Search
include Tire::Model::Callbacks
tire.mapping do
indexes :name, :type => :string
indexes :categories do
indexes :id, :type => :integer
end
end
end
製品をESにインポートしたら、
次のクエリが機能し、結果が得られます
Product.tire.search { query { string '*', default_operator: "AND", default_field: "name" } }.results
カテゴリ ID を指定して特定のカテゴリの商品を取得するにはどうすればよいですか?
Product.tire.search { query { string '*', default_operator: "AND", default_field: "name" }; filter(:term, 'categories.id' => 38) }.results
私は基本的に、次の黒点呼び出しに相当するタイヤを探しています。
Product.search do
with(:category_ids, 38)
end
Product クラスで以下を使用
searchable :auto_index => true, :auto_remove => true do
text :name
integer :category_ids, :multiple => true do
self.categories.map &:id
end
end