2014-07-15 1 views
0

필드 축소없이 solr에서 복합 정렬을 수행 할 수 있습니까?Solr에서 그룹화/필드 축소없이 정렬하는 데 어려움이 있음

내가 2 대의 차 모델, Ford와 Chevy를 가지고 있으면, 나는 가격이 2,000 (그 다음 포드> 2,000)가 그 다음 시보레 모델 인 포드에 우선 분류 할 수 있냐? 나는 그룹화하지 않고, 그리고 Chevy 모델에 가격 정렬을 적용하지 않고 이것을하고 싶습니다. 내가 할 정도로 &sort=Model:"Ford" AND price:[0 TO 2000]

같은 예를 들어

, 뭔가 :

Ford 1, $1000 
Ford 2, $500 
Ford 2, $1500 
_________ 
Ford 3, $3000 
Ford 3, $5000 
_______ 
Chevy 1 
Chevy 2 
Chevy 3 

답변

0

나는 이것에 조금 만지작 한, 나는 쿼리를 기반으로하는 솔루션을 마련했습니다() 함수와 함께 사용할 수 있습니다. 나는 성능에 대해 확신하지 못하고 인덱스의 문서 수에 따라 그다지 중요하지 않을 수 있으므로 유일한 방법은 시도하여 성능을 확인하는 것입니다. 나는 nameprice을 스키마의 두 필드로 사용했습니다. 나는 Modelprice 필드에 맵핑한다고 생각합니다.

정렬 방식은 각 절이 순서대로 평가되므로 첫 번째 정렬 설명이 먼저 수행되고 그 다음에는 끌기가있는 경우 다음 순서로 수행됩니다.

나는 URL 탈출을 제거하고 모든 것을 조금 포맷했습니다

sort=query($sq1,0) asc,query($sq2,0) asc 
    &sq1=name:Ford* AND price:[0 TO 1500] 
    &sq2=name:Ford* 

이 첫 번째 정렬이 sq1= URL 매개 변수에 지정된 쿼리를 수행한다는 것을 의미하지만, (무승부가 있다면 어떤이는 것 일치하지 않으면 sq2=이라는 쿼리가 수행됩니다 ($sq1$sq2은 쿼리를 의미하며 query() 기능을 평가하기 전에 Solr이 간단하게 대체합니다).

기본 정렬 순서를 제공하지 않았지만 name asc을 기본 정렬로 추가 할 수 있습니다. query()의 두 번째 인수 인 0은 쿼리에서 일치하는 항목이없는 경우 정렬에서 사용할 값입니다. 그렇지 않으면 쿼리의 점수가 사용됩니다. 이 값을 product()에 입력하고 가격을 곱하여 필요한 경우 각 "버킷"을 price별로 정렬 할 수 있습니다.

관련 문제