我有一个 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/