You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ji...@apache.org on 2019/01/02 08:37:20 UTC
lucene-solr:master: LUCENE-8627: Fix SearchAfter#testQueries to
always count the number of hits accurately.
Repository: lucene-solr
Updated Branches:
refs/heads/master 5016959ce -> 7c7036581
LUCENE-8627: Fix SearchAfter#testQueries to always count the number of hits accurately.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/7c703658
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/7c703658
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/7c703658
Branch: refs/heads/master
Commit: 7c70365811bb2800bdaf39302e187e8a9a180872
Parents: 5016959
Author: Jim Ferenczi <ji...@apache.org>
Authored: Wed Jan 2 09:37:10 2019 +0100
Committer: Jim Ferenczi <ji...@apache.org>
Committed: Wed Jan 2 09:37:10 2019 +0100
----------------------------------------------------------------------
.../apache/lucene/search/TestSearchAfter.java | 31 +++++++++++++++-----
1 file changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c703658/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java b/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java
index 4d95c87..2ce677c 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java
@@ -216,14 +216,24 @@ public class TestSearchAfter extends LuceneTestCase {
if (VERBOSE) {
System.out.println("\nassertQuery " + (iter++) + ": query=" + query + " sort=" + sort + " pageSize=" + pageSize);
}
- final boolean doScores = random().nextBoolean();
+ final boolean doScores;
+ final TopDocsCollector allCollector;
if (sort == null) {
- all = searcher.search(query, maxDoc);
+ allCollector = TopScoreDocCollector.create(maxDoc, null, Integer.MAX_VALUE);
+ doScores = false;
} else if (sort == Sort.RELEVANCE) {
- all = searcher.search(query, maxDoc, sort, true);
+ allCollector = TopFieldCollector.create(sort, maxDoc, Integer.MAX_VALUE);
+ doScores = true;
} else {
- all = searcher.search(query, maxDoc, sort, doScores);
+ allCollector = TopFieldCollector.create(sort, maxDoc, Integer.MAX_VALUE);
+ doScores = random().nextBoolean();
}
+ searcher.search(query, allCollector);
+ all = allCollector.topDocs();
+ if (doScores) {
+ TopFieldCollector.populateScores(all.scoreDocs, searcher, query);
+ }
+
if (VERBOSE) {
System.out.println(" all.totalHits.value=" + all.totalHits.value);
int upto = 0;
@@ -235,21 +245,28 @@ public class TestSearchAfter extends LuceneTestCase {
ScoreDoc lastBottom = null;
while (pageStart < all.totalHits.value) {
TopDocs paged;
+ final TopDocsCollector pagedCollector;
if (sort == null) {
if (VERBOSE) {
System.out.println(" iter lastBottom=" + lastBottom);
}
- paged = searcher.searchAfter(lastBottom, query, pageSize);
+ pagedCollector = TopScoreDocCollector.create(pageSize, lastBottom, Integer.MAX_VALUE);
} else {
if (VERBOSE) {
System.out.println(" iter lastBottom=" + lastBottom);
}
if (sort == Sort.RELEVANCE) {
- paged = searcher.searchAfter(lastBottom, query, pageSize, sort, true);
+ pagedCollector = TopFieldCollector.create(sort, pageSize, (FieldDoc) lastBottom, Integer.MAX_VALUE);
} else {
- paged = searcher.searchAfter(lastBottom, query, pageSize, sort, doScores);
+ pagedCollector = TopFieldCollector.create(sort, pageSize, (FieldDoc) lastBottom, Integer.MAX_VALUE);
}
}
+ searcher.search(query, pagedCollector);
+ paged = pagedCollector.topDocs();
+ if (doScores) {
+ TopFieldCollector.populateScores(paged.scoreDocs, searcher, query);
+ }
+
if (VERBOSE) {
System.out.println(" " + paged.scoreDocs.length + " hits on page");
}