ruby-on-rails - 如何在Rails Elasticsearch上模糊匹配 ruby 。

标签 ruby-on-rails ruby elasticsearch

我有一个 Controller 操作,该操作允许我通过文档GUID搜索Document。问题是GUID是20多个字符。我希望能够仅使用GUID的前5个字符来搜索文档。

我目前拥有的是:

search_params = { sort: { sent_at: :desc } }

if can_search && params[:document_id].present?
    search_params[:filter] = { term: { "_id" => params[:document_id] } }
    @documents = Elasticsearch::Model.search(search_params, [Document])
else
    @documents = Elasticsearch::Model.search(search_params, [Document]).page(params[:page]).per(20)
end

如果我输入确切的GUID,则效果很好。但是部分匹配不起作用。

最佳答案

您可以像这样使用WildcardQuery

search_params[:filter] = { wildcard: { "_id" => "*#{params[:document_id]}*" } }    

关于ruby-on-rails - 如何在Rails Elasticsearch上模糊匹配 ruby 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729357/

相关文章:

ruby-on-rails - has_many 与多态关联中的 class_name

ruby - Rake (Ruby) 在构建结束时捕获错误

elasticsearch - 如何在 elasticsearch 中定义一个不接受映射字段以外的字段的映射?

elasticsearch - 如何按对象的子对象字段对对象进行排序?

amazon-web-services - 将索引模板上传到 aws elasticsearch 服务

ruby-on-rails - Rails form_authenticity_token 不返回任何 session [:_csrf_token] returns the actual token

ruby-on-rails - rails : Different behavior on dev and production

ruby-on-rails - rails : How to get url like/users/2/events/2009-02. html

ruby - 将 ActiveRecord 与 DelegateClass 结合使用

jquery - Rails/SQL 语句减去空值