2016-04-19 8 views
1

私はDocumentを文書GUIDで検索できるコントローラアクションを持っています。問題は、GUIDが20文字以上であることです。私はGUIDの最初の5文字を​​言うだけでドキュメントを検索できるようにしたいと思います。ruby​​ on rails elasticsearchをあいまいにする方法。

私が現在持っていることは次のとおりです。

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を入力する場合、これは正常に動作します。しかし、部分一致は機能しません。

答えて

0

あなたはその

search_params[:filter] = { wildcard: { "_id" => "*#{params[:document_id]}*" } }  
よう WildcardQueryを使用することができます