2013-12-12 1 views
1

lucene 색인에서 검색하는 동안 일부 문서의 경우 topDocs.scoreDocs에 null 값이 표시됩니다. 는 []의 값에 대해 설명해주십시오 topDocs.scoreDocs에서분류 작업 중 lucene에서 점수를 설명 함

SortField sortFieldObj = new SortField(sortField, SortField.STRING, sortOrder); 
Sort sort = new Sort(sortFieldObj); 
TopDocs topDocs = searcher.search(query, null, sizeNeeded, sort); 
Document docNew = searcher.doc(topDocs.scoreDocs[i].doc); 
System.out.println(topDocs.scoreDocs[i]); 

출력 :

문서 = 2 점 = NaN의 []

문서 = 44 점수 = NaN [testString]

답변

4

글쎄, 공감은 간접적으로 Lucene에게 문서 스코어를 무시하고 자신의 정렬 순서를 사용하도록 말한 것입니다. 채점은 topdocs를 가져 오는 데 사용되지만 사용자가 지정한 정렬 순서대로 문서를 가져 오는 것을 선택 했으므로 NAN을 선택합니다.

당신은 당신이 당신의 자신의 정렬 순서는 검색에 또 다른 오버로드 된 메서드를 사용하여 지정된 때 당신에게 점수를주고 루씬을 강제하려면

:

search(Query query, Filter filter, int n, 
          Sort sort, boolean doDocScores, boolean doMaxScore) 

doDocScores는 각 히트의 점수가 becomputed 반환합니다 true 인 경우. doMaxScore가 true이면 수집 된 모든 히트의 최대 점수가 계산됩니다.

이렇게하면 다음과 같이 할 수 있습니다. searcher.search (query, null, sizeNeeded, sort, true, true);

+0

귀하의 코멘트를 주셔서 감사합니다 Arun ..하지만 내 질문에 [NULL]에 [NULL]에 대해 [] 내에서 필드 값을 받고. 나는 그 질문을 지금 강조했다 – rrsk

+0

또한 자신의 정렬 순서가 관련되어있을 때 scoreDocs가 의미하는 것 – rrsk

관련 문제