텍스트/키워드 상자와 여러 개의 필터가있는이 검색 기능이 있습니다. 부울 블록 (Tire/ElasticSearch)이있는 필터
query do
boolean do
must { string params[:text], default_operator: "AND" } unless params[:text].blank?
must { } unless
must { } unless
should { } unless
# some more must/should/must_not queries
end
end
# Some sorting
는 지금까지 내가 읽고으로, (속도 및 캐싱 등의 측면에서) 타이어가 제공하는 실제
filter
를 사용하여 구현하는 더 나은 방법이 될 것이다 : 나는 다음과 같은 구조로 지금 시행하고있다.
나는 이것을 구현하는 올바른 방법이 무엇인지 물어보고 싶습니다. 비슷한 boolean
블록을 filter
에 전달하는 방법을 찾지 못했습니다. 좋을 것 같습니다. 어쩌면 내가 잘못하고있는거야?
나는이 내게합니다 (filter
블록 라인에서) 다음과 같은 오류 제공
# This would be the main query, by text/keyword
query { string params[:text], default_operator: "AND" } unless params[:text].blank?
filter do
boolean do
# My regular filters that I implemented with queries
must { } unless
must { } unless
should { } unless
end
end
# Some sorting
같은 일을 생각하고 : 또한 ArgumentError - wrong number of arguments (0 for 1):
을, 나는이 문제가 ElasticSearch를 사용하여 달성 할 수 있다는 것을 알고 JSON 쿼리 (여기에 표시된 것처럼) : http://www.elasticsearch.org/guide/reference/query-dsl/bool-filter/. 그래서 타이어가이 기능 위에 비슷한 기능을 제공한다고 가정합니다.
도움 주셔서 감사합니다.
편집
내가 지금하려고하는 것은 다음과 같은 방법으로, 필터링 된 검색을 사용하는 것입니다
query do
filtered do
query { string params[:text], default_operator: "AND" } unless params[:text].blank?
# And here I would like to add the filter block... but for now I am using the filter :and
filter :and, { :terms => { } } unless params[:something1].blank?,
{ :terms => { } } unless params[:something2].blank?,
{ :range => { } } unless params[:something3].blank?,
# more filters that need the AND behavior
filter :or, { :terms => { } } unless params[:something4].blank?
# more filters that need the OR behavior
end
end
나는 또한 filter :and
가 빠르다는 것을 읽을 수 있기 때문에이 방법을 생각하고있다 boolean
보다. 이 올바른지?
이제 이러한 필터가 캐시됩니까? 또한,이 상황에서 올바른 접근 방식입니까?
감사합니다.
편집
에서 내가 코멘트에 게시 된 문제에 읽은, 내가 같은 것을 할 수 있다고 생각 :
filter :bool => [
{ :must => { :terms => { } } } unless ... ,
{ :must => { :terms => { } } } unless ... ,
{ :should => { :terms => { } } } unless ... ,
# and the other filters
]
이 권리인가를?
감사합니다.
방금 다음 호를 발견했습니다. https://github.com/karmi/tire/issues/2. karmi가'filter'를 위해이 기능을 실제로 구현하지 않은 것처럼 보입니까? – vburca
안녕하세요! 답변으로 의견을 게시하고 수락 할 수 있습니까? 같은 이슈를 가진 사람들을 도울 수 있습니다. – ramseykhalaf
좋아, 나는 아마 기다리고 있었다, 아마 karmi가 올 것이고, 그것을 깨끗하게 할 것이기를 바랐다 :) – vburca