gpt4 book ai didi

ruby-on-rails - ElasticSearch 和轮胎/Rails : use two fields for a single facet

转载 作者:行者123 更新时间:2023-12-03 13:39:38 24 4
gpt4 key购买 nike

将 Elasticsearch 与 Rails 3 和 tire gem 结合使用。

我有在几个领域工作的方面,但我现在有一个特殊要求,但不确定是否可行。我的模型项目中有两个字段都存储相同的值:Country1 和 Country2

用户最多可以为一个项目存储两个国家。两者的下拉菜单是相同的。这两个字段都不是必需的。

我想要的是一个“合并”来自 Country1 和 Country2 的值​​的单一方面,并​​且可以智能地处理点击这些方面(即无论它在 1 还是 2 中都会找到它)

到目前为止,这是我的模型:(注意 Country1/2 可以是多个单词)

class Project < ActiveRecord::Base
mapping do
indexes :id
indexes :title, :boost => 100
indexes :subtitle
indexes :country1, :type => 'string', :index => 'not_analyzed'
indexes :country2, :type => 'string', :index => 'not_analyzed'
end
def self.search(params)
tire.search(load: true, page: params[:page], per_page: 10) do
query do
boolean do
must { string params[:query], default_operator: "AND" } if params[:query].present?
must { term :country1, params[:country] } if params[:country].present?
end
end
sort { by :display_type, "desc" }
facet "country" do
terms :country1
end

end
end

非常感谢任何提示!

最佳答案

此提交 https://github.com/karmi/tire/commit/730813f in Tire 支持在“术语”方面聚合多个字段。

界面是:

Tire.search('articles-test') do
query { string 'foo' }
# Pass fields as an array, not string
facet('multi') { terms ['bar', 'baz'] }
end

关于ruby-on-rails - ElasticSearch 和轮胎/Rails : use two fields for a single facet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com