0

我正在为我们的 rails-app/data 探索各种搜索引擎选项。我能够使 sunspot/solr 工作,目前正在探索 ElasticSearch 作为替代方案,但无法在 ES 下获得相同的东西(范围/过滤)。

我想按照“ https://github.com/sunspot/sunspot ”中的“范围”部分中的描述过滤/范围对象。

我有一个活动记录类“产品”。

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