我有一个电影模型和一个搜索页面,有一个电影流派方面。可以在搜索页面上的每个方面附近选择一个复选框。我将选中的方面术语列表传递给控制器,我希望筛选电影集合只包括那些用复选框选择了类型的电影。
我的带有索引和搜索定义的模型是:
class Movie < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :id, :index => :not_analyzed
indexes :title, :analyzer => 'snowball', :boost => 100
indexes :description, :analyzer => 'snowball'
indexes :genres do
indexes :title, analyzer: 'keyword'
end
end
def to_indexed_json
to_json( include: { genres: { only: [:title, :id] } } )
end
def self.search(params={})
tire.search(page: params[:page], per_page: 5, load: false) do
query do
all
#boolean do
# must { string params[:query], :default_field => 'title' }
#end
end
#filter 'genres.title', :values => params[:genres] if params[:genres].present?
filter :terms, 'genres.title' => ['Genre 1', 'Genre 2', 'Genre 3']
facet 'global-genres', global: true do
terms 'genres.title', size: 15
end
facet 'scoped-genres' do
terms 'genres.title', size: 15
end
end
end
attr_accessible :description, :title, :year, :genres
has_and_belongs_to_many :genres, :uniq => true
end
我不确定这部分应该怎么改写:
#filter 'genres.title', :values => params[:genres] if params[:genres].present?
filter :terms, 'genres.title' => ['Genre 1', 'Genre 2', 'Genre 3']
#filter 'genres.id', :values => [1, 2, 3]
稍后,我将把流派列表或流派ID作为参数传递,我需要对它们进行筛选。
filter :terms, 'genres.title' => ['Genre 1', 'Genre 2', 'Genre 3']
它过滤到有‘类型1'或’类型2'或‘类型3'的电影,我需要这些类型和逻辑。
我怎样才能正确地做到这一点?
您需要使用execution:'和'
来设置筛选器。我已经将此作为示例添加到轮胎集成测试套件中:
s = Tire.search('articles-test') do
query { all }
filter :terms, :tags => ['ruby', 'python'], :execution => 'and'
end
问题内容: 我有带有嵌套字段的文档,如下所示: 嵌套字段的映射如下所示: 在切换到elasticsearch 2之前,我有一个带有aggs的查询,该查询计算了没有结果的文档。这是查询的聚合部分: 现在我切换到elasticserach 2,它只计算所有文档。我已经尝试过其他操作,例如计算所有文档和计算结果,以便可以减去结果,但是 总是0 如何正确过滤/计数嵌套字段? 问题答案: 如果您要计算产生结
问题内容: 我正在尝试通过轮胎/elasticsearch实现“类似作用域”的功能。为什么即使我有状态为“ Test1”或“ Test2”的条目也不能正常工作?结果始终为空。 该方法在没有过滤器的情况下工作良好。过滤器方法有问题吗?我已经检查了轮胎doku。 谢谢!:) 问题答案: 您的问题很可能是由于对该字段使用默认映射而引起的,该映射会将其标记化-小写,拆分为单词等。 比较这两个: 您的解决方
问题内容: 我在ng-table中有一张发票清单,希望能够对嵌套属性进行过滤。json看起来像这样; 我的看法是这样的 我想让过滤工作于client.fullname。如何过滤嵌套属性? 更新资料 我找到了一种解决方法,将嵌套字段放入非嵌套的JSON元素中,在上面的示例中,我创建了一个JSON [‘client_name’]元素并将其分配给rails模型中的client.fullname。然后,筛
我有一个带有嵌套数据的ES索引,它是这样映射的 我想创建一个对两个(原始)值进行筛选的查询。我可以创建一个筛选器,对这些值之一进行筛选,如下所示: 然而,我需要的是这样的东西: 第一个查询有效,第二个查询引发错误: 嵌套:QueryParsingException[[ocm][nested]筛选器不支持[null]]; 如何创建匹配多个路径中的字段的筛选器?
问题内容: 我有一个这样的文档模型: 一个客户可以有0个,1个或多个订单,一个订单可以有0个,1个或多个orderLines (这是我为这个问题创建的模型,因为我认为这是每个人都可以理解的数据,因此,如果发现任何错误,请让我知道,但不要让他们分散我的实际问题) 我想使用NEST创建一个查询,该查询选择一个(或所有)具有customer.id特定值的客户,但前提是他们至少具有一个具有特定articl
问题内容: 使用嵌套对象的布尔运算符时遇到一些麻烦。这是我的映射: 我想获取恰好包含两个指定ip甚至更多的文档。 假设我的文档具有以下ips: 我想通过使用此过滤器进行搜索来仅检索DOC 1: 问题在于,同时检索了DOC 1和DOC2。 问题答案: 你可以使用你的条件过滤器是这样的: 这是我用来测试的一些代码: http://sense.qbox.io/gist/d6b5f4e4c0d2977a0