2012-12-16 1 views
5

나는 여러 값의 인덱스 필드 인 author와 author_norm을 가지고 있으며이를 위해 다음과 같은 방법으로 계층 적 패싯 필드를 만들었습니다. https://wiki.apache.org/solr/HierarchicalFaceting#Indexed_Terms에 기술 된 패턴. 패싯 값은 다음과 같습니다.Solr hierarchical facets : 최상위 N 1 수준 값의 모든 2 수준 값을 얻는 방법

0/Blow, J 
1/Blow, J/Blow, Joe 
1/Blow, J/Blow, Joseph 
1/Blow, J/Blow, Jennifer 
0/Smith, M 
1/Smith, M/Smith, Michelle 
1/Smith, M/Smith, Michael 
1/Smith, M/Smith, Mike 

작성자는 기사 레코드와 관련이 있으며, 대부분의 경우 기사에는 많은 작성자가 있습니다. 즉, 100 개 이상의 기사를 반환하는 Solr 쿼리의 경우 1000 개 이상의 저자가 표시 될 수 있습니다.

내 문제는 내 facet.limit 및 facet.mincount가 정상적인 값으로 설정되어 있기 때문에 사용자에게이 계층 구조를 표시하려고 할 때 두 번째 수준 값의 전체 집합 즉, 내 계층 구조의 두 번째 수준은 특정 시점에서 중단됩니다. 나는 이런 식으로 뭔가있을 것이다 :

  • 불어, J (30)
    • 불어, 조 (17)
    • 불어, 요셉 (9)
  • 스미스, M (22)
    • 스미스 미셀 (14)
    • 스미스 마이클 (6)
    • ,451,515,

나는 또한하고 싶은 "바람을 불어 제니퍼 (4)"와 "스미스, 마이크 (2)"이 목록의 항목,하지만 그들은 응답으로 반환하지 않을 mincount 차단이기 때문이다 5. 그래서 나는 혼란스런 디스플레이 (17 + 9! = 30 등)로 끝난다.

하나의 옵션은 모든 2 수준 목록의 하단에 약간 "더 많은"링크를 넣고 아약스를 통해 전체 세트를 가져 오는 것입니다. 나는 사용자가 실제로해야 할 것보다 더 많이 클릭하거나 클릭하도록 요청하고 있기 때문에이 솔루션에 미친 것이 아니며 초기 2 레벨 목록의 길이를 제어 할 수 없기 때문에이 솔루션에 미친 짓은 아닙니다. 때로는 3 개의 이름 + "(더)", 때로는 2 또는 1이 될 것입니다. 그것은 단지 추한 것입니다.

내 계층 적 패싯 필드에 대해 mincount = 1 및 limit = -1로 설정할 수 있지만 큰 쿼리 (100k 히트)의 경우에는 필요하지 않은 100k + 값을 가져올 수 있기 때문에 견디지 않을 수 있습니다. 난 최상위 N 1 수준 값에 대한 2 수준 값의 전체 집합 만 필요합니다.

다른 사람이 더 좋은 제안을하지 않으면 어떤 종류의 후속 쿼리를해야한다고 가정합니다. 그래서 모든 일이 끝나면, 제가 묻고있는 것은 다음과 같습니다. 하나의 후속 쿼리에서 두 번째 수준의 값을 가져 오는 방법이 있습니까? 초기 solr 응답이 주어지면 내 계층 구조의 최상위 N 1 수준 값의 모든 2 수준 순열을 어떻게 얻을 수 있습니까?

감사합니다.

PS, 저는 Solr 4.0을 사용하고 있습니다.

+0

그렇게하지 두 필드가 아마 fieldB로 fieldA의 복사본을 생성 할 경우에 같은 facet.pivot=fieldA,filedA

facet.pivot=fieldA,filedB&f.fieldA.limit=3&f.fieldB.limit=-1 

문제가 시작 이해 : 첫 번째 레벨 패싯에서 필터링하면 첫 번째 레벨 패싯 아래에서 그 두 번째 레벨 패싯 만 반환해야합니까? 주어진, mincount = 1 (= 기본값) 그리고 당신은 끝났어. –

+0

흠, 오래 된 질문. 잘 오 –

+0

피벗 faceting하려고합니다. 문제가 해결 될 수도 있습니다. http://wiki.apache.org/solr/SimpleFacetParameters#Pivot_.28ie_Decision_Tree.29_Faceting – Zouzias

답변

0

당신은 피벗의 모든 수준 mincount을 수정할 수 있습니다