0

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
4

0 に答える 0