2017-11-17 23 views
5

solr에 색인 된 필드 중 일부 분포에 따라 결과를 얻는 방법이 있습니까?solr 결과물을 배포판에 따라 얻습니다.

예를 들어, "개요" "publication_year"및 "genre"필드가있는 책 카탈로그가 있다고 가정 해보십시오. 가장 최근에 발행 된 책을 선호하는 "개요"에 따라 가장 관련성이 높은 결과를 반환하는 쿼리를 작성하고 싶습니다. 그러나 최종 결과에서 (예를 들어 1000이라고 가정 해 봅시다) 50 % 공상 과학, 25 % 논픽션, 10 % 정치 등과 같이 특정 배포본에 따라 장르를 최대한 가깝게 배포하고 싶습니다.

나는 큰 결과 집합을 얻을 수 있고 solr 밖에있는 최종 1000 권의 책을 얻기 위해 샘플링 된 가중치 저장소를 수행 할 수 있음을 알고 있지만 solr 일 수있는 해결책을 찾고있다.

이것이 가능합니까? 그렇지 않은 경우 문제를 해결하는 방법에 대한 조언이 있습니까?

답변

0

배포본을 플러그인 할 수 없지만 Collapse and Expand 또는 Result Grouping을 사용하면 각 장르에 대해 n 개의 결과를 얻을 수 있습니다. 그런 다음 해당 그룹에 대한 임계 값 이상으로 반환 된 결과를 무시합니다.

총 조회수 분포 (위의 예에서는 500)에서 각 그룹의 문서 수를 최대 버킷 크기로 설정해야합니다. 이것은 당신에게 작업 할 문서의 매우 큰 세트를 줄 수 있으므로, 나는 pr을 반환하는 총 수를 유지하려고 노력할 것입니다. 최소한 장르는 다소 작습니다.

위의 두 가지 기능 중 하나를 확장하고 장르별로 수집 된 문서 수를 제한하는 코드를 추가하여 그룹 크기를보다 동적으로 만들 수있는 방법이있을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. @matslindh! "결과 그룹화"기능을 사용하여 각 장르의 상위 N 개의 결과를 얻은 다음 solr 외부의 필수 숫자에 따라 필터링했습니다. 언급 한 바와 같이 결과의 수가 잠재적으로 높기 때문에이 방법의 성능에 대해 조금 걱정이됩니다. 제안한 솔루션에서 "축소 및 확장"기능이 어떻게 구현됩니까? – lucacerone