gpt4 book ai didi

ruby-on-rails - 带条件的 Rails Elasticsearch

转载 作者:行者123 更新时间:2023-11-29 02:52:29 26 4
gpt4 key购买 nike

我在我的 Rails 应用程序中使用 Elasticsearch(elasticsearch-model、elasticsearch-rails gems)。我写了一个简单的搜索:

def search
@posts = params[:term] ? Post.search(params[:term]) : []
render json: @posts
end

效果不错。但是我做了一些修复,以便在 'deleted=false' 和 'enabled=true' 子集之间进行搜索:

def search
@posts = params[:term] ? Post.existing.enabled.search(params[:term]) : []
render json: @posts
end

发布

class Post < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks

scope :existing, ->{ where(deleted: false) }
scope :enabled, ->{ where(enabled: true) }
end
Post.import

它不起作用 - 我看到与前一种情况相同的结果(“已删除”和“现有”列中有任何值。我该如何解决?提前致谢。

最佳答案

更改您的search 方法的工作方式。

@posts = params[:term] ? Post.search(params[:term], existing: true, enabled: true) : []

后模型

def self.search query, options = {}
__add_filter = lambda do |f|
search_definition[:filter][:and] ||= []
search_definition[:filter][:and] |= [f]
end
search_definition = {
query: {},
filter: {}
}
if options[:existing]
__add_filter.({ term: {'deleted' => false}})
end
if options[:enabled]
__add_filter.({ term: {'enabled' => true}})
end
unless query.blank?
search_definition[:query] = {
# add your query logic
}
else
search_definition[:query] = { match_all: {}}
end
__elasticsearch__.search(search_definition)
end

您还可以查看 elastic_search example

关于ruby-on-rails - 带条件的 Rails Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235814/

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