You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by GitBox <gi...@apache.org> on 2022/02/02 17:38:39 UTC

[GitHub] [lucene] jpountz commented on a change in pull request #639: LUCENE-10002: Replace some IndexSearcher#search(Collector, Query) in tests

jpountz commented on a change in pull request #639:
URL: https://github.com/apache/lucene/pull/639#discussion_r797855989



##########
File path: lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
##########
@@ -492,33 +493,43 @@ private void assertSameScoresWithoutFilters(IndexSearcher searcher, BooleanQuery
     final AtomicBoolean matched = new AtomicBoolean();
     searcher.search(
         bq,
-        new SimpleCollector() {
-          int docBase;
-          Scorable scorer;
-
+        new CollectorManager<SimpleCollector, Boolean>() {
           @Override
-          protected void doSetNextReader(LeafReaderContext context) throws IOException {
-            super.doSetNextReader(context);
-            docBase = context.docBase;
-          }
-
-          @Override
-          public ScoreMode scoreMode() {
-            return ScoreMode.COMPLETE;
+          public SimpleCollector newCollector() {
+            return new SimpleCollector() {
+              int docBase;
+              Scorable scorer;
+
+              @Override
+              protected void doSetNextReader(LeafReaderContext context) throws IOException {
+                super.doSetNextReader(context);
+                docBase = context.docBase;
+              }
+
+              @Override
+              public ScoreMode scoreMode() {
+                return ScoreMode.COMPLETE;
+              }
+
+              @Override
+              public void setScorer(Scorable scorer) {
+                this.scorer = scorer;
+              }
+
+              @Override
+              public void collect(int doc) throws IOException {
+                final float actualScore = scorer.score();
+                final float expectedScore =
+                    searcher.explain(bq2, docBase + doc).getValue().floatValue();
+                assertEquals(expectedScore, actualScore, 10e-5);
+                matched.set(true);
+              }
+            };
           }
 
           @Override
-          public void setScorer(Scorable scorer) throws IOException {
-            this.scorer = scorer;
-          }
-
-          @Override
-          public void collect(int doc) throws IOException {
-            final float actualScore = scorer.score();
-            final float expectedScore =
-                searcher.explain(bq2, docBase + doc).getValue().floatValue();
-            assertEquals(expectedScore, actualScore, 10e-5);
-            matched.set(true);
+          public Boolean reduce(Collection<SimpleCollector> collectors) {

Review comment:
       use Void like in other places to to better set the expectation that the return value is irrelevant?

##########
File path: lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
##########
@@ -492,33 +493,43 @@ private void assertSameScoresWithoutFilters(IndexSearcher searcher, BooleanQuery
     final AtomicBoolean matched = new AtomicBoolean();
     searcher.search(
         bq,
-        new SimpleCollector() {
-          int docBase;
-          Scorable scorer;
-
+        new CollectorManager<SimpleCollector, Boolean>() {
           @Override
-          protected void doSetNextReader(LeafReaderContext context) throws IOException {
-            super.doSetNextReader(context);
-            docBase = context.docBase;
-          }
-
-          @Override
-          public ScoreMode scoreMode() {
-            return ScoreMode.COMPLETE;
+          public SimpleCollector newCollector() {
+            return new SimpleCollector() {
+              int docBase;
+              Scorable scorer;
+
+              @Override
+              protected void doSetNextReader(LeafReaderContext context) throws IOException {
+                super.doSetNextReader(context);
+                docBase = context.docBase;
+              }
+
+              @Override
+              public ScoreMode scoreMode() {
+                return ScoreMode.COMPLETE;
+              }
+
+              @Override
+              public void setScorer(Scorable scorer) {
+                this.scorer = scorer;

Review comment:
       I'd prefer to keep things as they are. It requires more lines of code, but then if we add a new abstraction then you need to know what it's doing whenever you see it used, which is non-negligible cognitive overhead.

##########
File path: lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
##########
@@ -219,160 +221,101 @@ public void testBasic() throws Exception {
 
     searcher.search(
         q1,
-        new CountingHitCollector() {
-          private Scorable scorer;
-
-          @Override
-          public ScoreMode scoreMode() {
-            return ScoreMode.COMPLETE;
-          }
-
+        new CollectorManager<SimpleCollector, Void>() {
           @Override
-          public final void setScorer(Scorable scorer) {
-            this.scorer = scorer;
+          public SimpleCollector newCollector() {
+            return new ScoreAssertingCollector() {
+              @Override
+              public void collect(int doc) throws IOException {
+                // System.out.println("Q1: Doc=" + doc + " score=" + score);
+                float score = scorer.score();
+                assertTrue("got score=" + score, score == 1.0f);
+              }
+            };
           }
 
           @Override
-          public final void collect(int doc) throws IOException {
-            // System.out.println("Q1: Doc=" + doc + " score=" + score);
-            float score = scorer.score();
-            assertTrue("got score=" + score, score == 1.0f);
-            super.collect(doc);
+          public Void reduce(Collection<SimpleCollector> collectors) {
+            return null;
           }
         });
-    // System.out.println(CountingHitCollector.getCount());
 
     searcher.search(
         q2,
-        new CountingHitCollector() {
-          private Scorable scorer;
-
-          @Override
-          public ScoreMode scoreMode() {
-            return ScoreMode.COMPLETE;
-          }
-
+        new CollectorManager<SimpleCollector, Void>() {
           @Override
-          public final void setScorer(Scorable scorer) {
-            this.scorer = scorer;
+          public SimpleCollector newCollector() {
+            return new ScoreAssertingCollector() {
+              @Override
+              public void collect(int doc) throws IOException {
+                // System.out.println("Q2: Doc=" + doc + " score=" + score);
+                float score = scorer.score();
+                assertEquals(1.0f + doc, score, 0.00001f);
+              }
+            };
           }
 
           @Override
-          public final void collect(int doc) throws IOException {
-            // System.out.println("Q2: Doc=" + doc + " score=" + score);
-            float score = scorer.score();
-            assertEquals(1.0f + doc, score, 0.00001f);
-            super.collect(doc);
+          public Void reduce(Collection<SimpleCollector> collectors) {
+            return null;
           }
         });
-    // System.out.println(CountingHitCollector.getCount());
 
     searcher.search(
         q3,
-        new CountingHitCollector() {
-          private Scorable scorer;
-
-          @Override
-          public ScoreMode scoreMode() {
-            return ScoreMode.COMPLETE;
-          }
-
+        new CollectorManager<SimpleCollector, Void>() {
           @Override
-          public final void setScorer(Scorable scorer) {
-            this.scorer = scorer;
+          public SimpleCollector newCollector() {
+            return new ScoreAssertingCollector() {
+              @Override
+              public void collect(int doc) throws IOException {
+                // System.out.println("Q1: Doc=" + doc + " score=" + score);
+                float score = scorer.score();
+                assertTrue(score == 1.0f);
+                assertFalse(doc % 2 == 0);
+              }
+            };
           }
 
           @Override
-          public final void collect(int doc) throws IOException {
-            // System.out.println("Q1: Doc=" + doc + " score=" + score);
-            float score = scorer.score();
-            assertTrue(score == 1.0f);
-            assertFalse(doc % 2 == 0);
-            super.collect(doc);
+          public Void reduce(Collection<SimpleCollector> collectors) {
+            return null;
           }
         });
-    // System.out.println(CountingHitCollector.getCount());

Review comment:
       It's ok to remove them.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org