2014-11-11 1 views
2

SOLR 나를 위해 다중 선택면 수를 생성 값 :SOLR 패싯 수는 여기에 설명 된대로

https://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams

나는 또한 사용자가 카탈로그를 검색 할 수 있도록 미리 정의 된 다양한 검색 결과가. 다음은 그와 같은 쿼리 매개 변수 중 하나입니다.

q=*:* 
fq={!tag=g}genre:western 
facet=on 
facet.field={!ex=g}genre 
facet.mincount=1 
facet.limit=50 

이 검색을 통해 패싯 목록에서 최대 50 개의 장르 값을 얻을 수 있습니다. 그런 다음 사용자가 선택한 값을 확인하고 마킹합니다. 이 경우 서쪽입니다. 이는 서쪽이 상위 50 개에서 푸시 될 때를 제외하고는 잘 작동합니다. 따라서 수동으로 목록에 추가하여 총 51 개를 만듭니다. 이렇게하면 사용자는 실제로 선택되었음을 알 수 있습니다. 문제는 내가 모르는 사이에 서부의 빈칸을 공백으로 두어야한다는 것입니다.

이 경우 서쪽과 같은 특정 패싯 값을 계산할 수있는 방법이 있습니까? 또는이 문제를 해결하기위한 또 다른 접근법입니까?

저는 Solr 4.7.0을 사용하고 있습니다.

답변

1

Solr을 사용하면 facet.query 매개 변수를 사용하여 쿼리 기반면 카운트를 만들 수 있습니다.

facet.query={!ex=g}genre:western 

을 내 매개 변수의 나머지 부분에 추가 : 패싯 필드 값을 기반으로 필터 쿼리 (fq)을 만들 때, 지금 해당면 쿼리를 만들

q=*:* 
fq={!tag=g}genre:western 
facet=on 
facet.field={!ex=g}genre 
facet.query={!ex=g}genre:western 
facet.mincount=1 
facet.limit=50 

facet_queries 객체는 이제 SOLR 응답에 채워집니다 :

에 관계없이 facet_fields 객체로 반환됩니다 무엇
{ 
    ... 
    "facet_counts": { 
    "facet_queries": { 
     "{!ex=g}genre:western": 7 
    }, 
    ... 
    }, 
    ... 
} 

, 지금은 FA를 보장하고 있습니다 cet count는 genre:western입니다. 일부 구문 분석을 사용하면 패싯 필드 카운트를 패싯 쿼리에서 추출 할 수 있습니다.