2016-10-07 2 views

답변

1

with(:added_at, nil)를 추가하여 현장에서 added_at을 더 값이없는 문서에 대한 검색 결과를 좁힐, 그래서 같이 우리는 해당 쿼리 필터를 정의 할 것으로 예상 할 수있다 :

fq=>["added_at_d:null"] # not valid 

문제가 있음을 SOLR입니다 표준 쿼리 파서는 빈/널 값 필드를 검색하는 것을 지원하지 않습니다. 이 경우 쿼리를 유효하게 유지하려면 필터를 무효화 (필드에 값이있는 문서 제외)해야합니다. 있지만,

fq=>["-added_at_d:*"] 

그러나 지금 우리는 쿼리 필터 모양을 기대할 수,

운영자 - 필드를 제외 할 수 있습니다, 그리고 와일드 카드 문자 * 어떤 값과 일치 할 수 있습니다 위 쿼리 구문 분석기에 유효합니다. 범위 쿼리를 사용하면 음수 하위 쿼리에서 와일드 카드를 사용할 때 불규칙한 동작을 방지하는 것이 좋습니다.

범위 쿼리를 사용하면 필드 쿼리 값이 범위 쿼리에서 지정한 상한과 하한 사이의 인 문서와 일치시킬 수 있습니다. 범위 쿼리는 상한 및 하한을 포함하거나 포함하지 않을 수 있습니다.

* 중 하나 또는 양쪽 끝점에 대해 제한없는 범위 쿼리를 지정할 수 있습니다.

결국처럼 보이는 끝이 필터에 아무 문제가 없다 :

fq=>["-added_at_d:[* TO *]"] 

참조, Lucene Range Queries, Solr Standard Query Parser

+0

좋은 답변 감사합니다. @ericlavalut – TiSer