Ruby on rails ElasticSearch/Tire-查询未过滤镶嵌面?
我有一个ElasticSearch/Tire查询,其中附加了面。似乎facets a使用全局范围,而不是查询范围和过滤器 这是我的定义。我不确定如何确定使用过滤器的范围Ruby on rails ElasticSearch/Tire-查询未过滤镶嵌面?,ruby-on-rails,ruby,
elasticsearch,tire,Ruby On Rails,Ruby,
elasticsearch,Tire,我有一个ElasticSearch/Tire查询,其中附加了面。似乎facets a使用全局范围,而不是查询范围和过滤器 这是我的定义。我不确定如何确定使用过滤器的范围 def self.facets_for(keyword_array, fasit, opts = {}) keyword_array = [keyword_array] if keyword_array.is_a?(String) tire.search(per_page: opts[:per_page], p
def self.facets_for(keyword_array, fasit, opts = {})
keyword_array = [keyword_array] if keyword_array.is_a?(String)
tire.search(per_page: opts[:per_page], page: opts[:page] ) do
query do
boolean { should { string '*' }}
end
filter :terms, :keyword => keyword_array
facet "phrases" do terms :phrases, :size => 20 end if fasit.include?("phrases")
facet "sentiment" do terms :sentiment end if fasit.include?("sentiment")
facet "lang" do terms :lang end if fasit.include?("lang")
facet "provider" do terms :provider end if fasit.include?("provider")
end # tire search
end
现在,这将返回范围为“全局”的方面,也就是说,它们不被过滤器过滤(如果有更复杂的查询,也不被查询过滤)
我错过了什么 facet默认情况下由发出的查询绑定(限制):请参阅
相反,过滤器不会限制面,使“面导航”成为可能(请再次参阅)
请注意,在您的示例中,您的查询实际上是一个match\u all
查询,因此不能限制方面
在Ruby方面,对于
关键字数组
来说,更安全的构造是:
keyword_array = Array(keyword_array)
默认情况下,facet由发出的查询绑定(限制):请参阅
相反,过滤器不会限制面,使“面导航”成为可能(请再次参阅)
请注意,在您的示例中,您的查询实际上是一个match\u all
查询,因此不能限制方面
在Ruby方面,对于
关键字数组
来说,更安全的构造是:
keyword_array = Array(keyword_array)