Lucene 5.3을 사용하여 문서 집합을 인덱싱하고 BooleanQuery
을 사용합니다. 여기서 쿼리의 각 용어는 몇 가지 점수로 향상됩니다.lucene이 색인의 모든 문서를 반환하지 않는 이유는 무엇입니까?
제 문제는 인덱스를 검색 할 때 내 색인에있는 것보다 적은 수의 문서를 얻는 것입니다.
System.out.println("docs in the index = " + reader.numDocs());
//e.g., docs in the index = 92
TopDocs topDocs = indexSearcher.search(q, reader.numDocs()); //this ensures no result is omitted from the search.
ScoreDoc[] hits = topDocs.scoreDocs;
System.out.println("results found: " + topDocs.totalHits)
//e.g., results found: 44
이 동작의 이유는 무엇입니까? lucene은 점수가 0 인 문서를 무시합니까?
점수에 관계없이 색인의 모든 문서를 얻으려면 어떻게해야합니까?
이 쿼리는 색인의 모든 문서와 일치 할 것으로 기대합니까? 또는 쿼리와 일치하는지 여부와 상관없이 모든 문서를 반환하겠습니까? – femtoRgon
모든 문서를 반환하고 싶습니다. 그런 다음 점수에 따라 점수를 매길 것이므로 일치하지 않는 문서가 맨 아래에 표시됩니다. – KillBill
@KillBill IndexSearcher :: search의 코드를 보면 maxScore를 기준으로 문서를 반환하지 않을 가능성이 있습니다. 새 TopDocs를 반환합니다 (totalHits, scoreDocs, maxScore). 그래서 TopDocs searchAfter (ScoreDoc, Query query, int n)를 사용합니다. –