2012-06-08 4 views
0

내가 찾고있는 것은 내 결과를 "부분적으로 붕괴"하는 작업입니다. 의 문서는 특정 필드가 그룹화되어 거의 중복 된 것으로 보이는 것을 제거하지만이 필드가없는 모든 문서는 영향을받지 않습니다. 들판 붕괴.Solr 그룹화 : 누락 된 필드에 대한 동작을 변경할 수 있습니까?

(특히 문제의 문서는 토론 포럼의 개별 게시물이며 스레드는 차례로 구성됩니다. 포럼은 페이지 당 전체 스레드를 표시하므로 동일한 스레드의 여러 히트는 본질적으로 사용자가 우려하고 스레드가 길어질수록 사용자가 주제에 집착하면 이는 불가피합니다. 그러나이 붕괴가 전혀 이해되지 않는 여러 가지 유형의 문서가 있습니다.

Solr 사용 3.5, 내가 가장 가까이있는 것은

...&group=true&group.main=true&group.field=threadid&group.limit=3 

입니다.하지만 Solr은 "miss ing "을 값으로 사용하고 다른 모든 것을 3 개의 히트 수로 축소합니다. 누락 된 값을"고유 "로 취급하고 싶습니다.

이 작업을 수행 할 수 있습니까? 아니면 스키마 디자인을 수정해야합니까?

답변

1

solr의 기존 쿼리 매개 변수를 사용하여 직접 구현할 수 있다고 생각하지 않습니다.

  • 각 게시물이 확인 하십 threadid 등 일회성 게시물은 '정상'threadid의와 충돌하지 않는 고유 threadid을 가지고 :

    당신은 작동 할 두 가지 옵션이 있습니다. 이 입력란을 그룹화하면 해당 입력란이 자신의 그룹에 표시됩니다.

  • 실행 두 쿼리, 그룹화 하나를 사용할 수 있지만, 다음 threadid (예 fq=threadid:[* TO *])없이 게시물을 필터링 fq 매개 변수 역 fq (fq=-threadid:[* TO *]) 만 비 스레드 게시물에 대한 다음 다른 쿼리, 이러한 결과를 자신의 코드에 병합하십시오.

+0

소리가 적당합니다. 인덱싱 할 때'uniqueKey'의 값을'threadid'에 복사하고 성능과 유지 보수성을 평가할 것입니다. 또 다른 좋은 점은'threadid'는 거의 중복 제거/축소가 바람직한 다른 유형의 문서에 재사용 될 수 있다는 것입니다. 그것은 아마도 먼저 이름을 바꾸는 것이 좋습니다. 감사! –

관련 문제