2010-02-24 1 views
3

sortfield를 통과 한 후에도 문서의 스코어는 검색 결과의 정렬 순서에 영향을줍니다. 특정 정렬 필드가 전달 될 때 문서 스코어를 무시하도록 lucene을 만드는 방법이 있습니까? 예를 들어결과의 정렬 순서에 영향을 미치는 문서 스코어, Lucene

는 :

DocId Score  SortFieldA  SortFieldB 
    1  23.0041  200906030800  Test 
    2  32.2774  200906020800  Test 
    3  21.0632  200906030800  Apple 

나는 결과가 SortFieldB에 의해 처음으로 다음 SortFieldA으로 분류되고 싶어요. 따라서 위의 경우 결과는 doc2, doc3 및 doc1이어야하며 반환되어야합니다. 그러나 점수 때문에 정렬 순서가 흐트러집니다.

문서의 점수가 동일하면 결과가 올바르게 정렬됩니다.

public override Sort GetSort() 
    { 
     List<SortField> sortFields = new List<SortField>();  
     sortFields.Add(new SortField(StartDateTime.ToString(), SortField.STRING, ReverseSort)); 
     sortFields.Add(new SortField(TitleSort.ToString(), SortField.STRING, ReverseSort)); 
     return new Sort(sortFields.ToArray()); 
    } 
+0

몇 가지 코드를 게시 할 수 있습니까? – bajafresh4life

+0

게시물을 예제로 업데이트했습니다. 감사. –

+0

코드를 선택하고 편집 상자 위의 코드 버튼을 사용하여 코드의 형식을 지정하십시오. 또는 각 코드 줄 앞에 4 개의 공백을 넣을 수도 있습니다. –

답변

0

편집 : 정렬 필드를 설정

코드 원래 점수 상관하지 않는 한, 나는 당신이 그들을 통과 후 첫 안타를 얻을 수있는 ConstantScoreQuery을 사용하고, 필요 믿는다 선별기.

this question을 사용해보십시오.

+0

오버로드 된 검색 메서드에 sortobject를 전달할 때 인덱스에 문제가 없습니다. 정렬은 정상적인 경우에 완벽하게 작동합니다. 정렬 점수가 다른 문서의 경우에만 SortField가 올바르게 사용됩니다. 결과를 정렬하려고 시도하고 정렬 점수가 높은 결과가 잘못 배치됩니다. –