2011-11-30 3 views
4

난 faceting에 문제가있다. 이 상황을 상상해보십시오. 제품은 둘 이상의 범주에 속할 수 있습니다.Solr complex faceting

  • 안드로이드 (25)
  • 아이폰 (55)
  • 기타 (25)

가 지금은 "안드로이드"를 선택

카테고리 : 이것은 페이스 팅에 대한 일반적인 동작입니다 "fq"=> "category : Android"로 새로운 쿼리를 만듭니다.

카테고리

  • 안드로이드
  • 아이폰 (15)
  • 기타 (2)

그러나이 범주 "안드로이드"AND "아이폰"에있는 15 개 제품이 있다는 것을 의미한다. 나는 이런 식으로 뭔가를 싶습니다 ("안드로이드"OR "아이폰")

카테고리

  • 안드로이드
  • 아이폰 (+5)
  • 기타 (+1)

의미는 "Android (25)"를 선택하여 25 개의 결과를 얻고, "iPhone (+5)"을 선택하여 5 개의 결과를 얻게 됨으로써 결국 30 개의 검색 결과를 얻게됩니다.

SOLR의 패 시팅으로 이것이 가능한지 아는 사람 있습니까? 또는 둘 이상의 쿼리를 사용하여 수동으로 계산할 수 있습니까?

고마워요!

+0

"Android"를 선택하면 25 개의 결과가 표시되며 15 개의 카테고리에도 "iPhone"범주가 있습니다. "iPhone"을 추가하면 30 개의 결과가 나오지 않습니다. AND를 사용하면 15 개의 결과가 나옵니다. OR을 사용하면 25 + 55 개의 결과가 나옵니다. +5는 어디에서 왔습니까? – morja

+0

"제품을 정확히 하나의 범주에 포함 할 수 있다면 OR을 사용하면 25 + 55 개의 결과가 나타납니다"=> 그럴 수 있습니다.하지만 내 경우에는 둘 이상에있을 수 있습니다. OR은 30 개의 결과를 줄 것입니다. – user987220

답변

3

"fq" => "-category:Android"과 같이 선택 항목의 음수를 사용하여 새 쿼리를 시도하십시오. 그러면 원하는 패싯 카운트를 얻어야합니다.

+0

고마워요. ! 그것은 정확하게 그것이었다! !! – user987220

3

필요한 모든 순열에 따라 임의의 쿼리에 대한 카운트를 얻을 수있는 query facets을 조사하는 것이 좋습니다. 예를 들어, facet.query=category:("Android" OR "iPhone")을 수행하고 category:("Android" OR "iPhone")에 키를 입력 한 결과를 얻을 수 있습니다. 또한 원하는 모든 수의 쿼리에 대해이 작업을 수행 할 수 있습니다. 따라서 귀하의 경우 직선 필드 패싯과 쿼리 패싯의 일부 조합으로 최종 솔루션을 얻을 수 있습니다.

편집 : 당신은 또한 사용자가 선택 "에 선택"할 수 있도록하는 방법에 따라 추가 fqtagging and excluding 부분으로보고 할 수 있습니다, 당신이 질문을 다시 읽고. (문서의 예는 원래 설정과 거의 비슷하지만 최종 동작이 원하는대로 맞는지는 잘 모르겠 음).

+0

조언을 해주셔서 감사합니다.하지만 분명히 nikhil500의 답변이 나와 있습니다. – user987220