zacharymorn commented on a change in pull request #444:
URL: https://github.com/apache/lucene/pull/444#discussion_r750880606



##########
File path: 
lucene/sandbox/src/test/org/apache/lucene/sandbox/search/TestCombinedFieldQuery.java
##########
@@ -165,6 +169,117 @@ public void testSameScore() throws IOException {
     dir.close();
   }
 
+  public void testSameScoreAndCollectionBetweenCompleteAndTopScores() throws 
IOException {

Review comment:
       This test was actually developed in another related PR 
https://github.com/apache/lucene/pull/418, and it would generate duplicated 
field-weight pairs in `fields` object to trigger the condition. As the existing 
tests don't currently trigger that condition, I thought this would be a good 
test to put in first for both PRs. 
   
   I guess if we were to have a focused test for this PR, it would still look 
something very similar to this test (and `testCopyField`), maybe something like 
the following, and it just ensures the test run through without assertion 
exception. The delta between the tests are just I removed some doc content 
randomizations and result comparison between TOP_SCORE and COMPLETE collection.
   
   ```
    public void testShouldRunWithoutAssertionException() throws IOException {
       int numDocs =
           randomBoolean()
               ? atLeast(1000)
               : atLeast(128 * 8 * 8 * 3); // make sure some terms have skip 
data
       int numMatchDoc = randomIntBetween(200, 500);
       int numHits = atMost(100);
       int boost1 = Math.max(1, random().nextInt(5));
       int boost2 = Math.max(1, random().nextInt(5));
   
       Directory dir = newDirectory();
       Similarity similarity = randomCompatibleSimilarity();
   
       IndexWriterConfig iwc = new IndexWriterConfig();
       iwc.setSimilarity(similarity);
       RandomIndexWriter w = new RandomIndexWriter(random(), dir, iwc);
   
       // adding potentially matching doc
       for (int i = 0; i < numMatchDoc; i++) {
         Document doc = new Document();
   
         int freqA = random().nextInt(20) + 1;
         if (randomBoolean()) {
           for (int j = 0; j < freqA; j++) {
             doc.add(new TextField("a", "foo", Store.NO));
           }
         }
   
         freqA = random().nextInt(20) + 1;
         if (randomBoolean()) {
           for (int j = 0; j < freqA; j++) {
             doc.add(new TextField("a", "foo" + j, Store.NO));
           }
         }
   
         freqA = random().nextInt(20) + 1;
         if (randomBoolean()) {
           for (int j = 0; j < freqA; j++) {
             doc.add(new TextField("a", "zoo", Store.NO));
           }
         }
   
         int freqB = random().nextInt(20) + 1;
         if (randomBoolean()) {
           for (int j = 0; j < freqB; j++) {
             doc.add(new TextField("b", "zoo", Store.NO));
           }
         }
   
         freqB = random().nextInt(20) + 1;
         if (randomBoolean()) {
           for (int j = 0; j < freqB; j++) {
             doc.add(new TextField("b", "zoo" + j, Store.NO));
           }
         }
   
         int freqC = random().nextInt(20) + 1;
         for (int j = 0; j < freqC; j++) {
           doc.add(new TextField("c", "bla" + j, Store.NO));
         }
         w.addDocument(doc);
       }
   
       IndexReader reader = w.getReader();
       IndexSearcher searcher = newSearcher(reader);
       searcher.setSimilarity(similarity);
   
       CombinedFieldQuery query =
           new CombinedFieldQuery.Builder()
               .addField("a", (float) boost1)
               .addField("b", (float) boost2)
               .addTerm(new BytesRef("foo"))
               .addTerm(new BytesRef("zoo"))
               .build();
   
       TopScoreDocCollector completeCollector =
           TopScoreDocCollector.create(numHits, null, Integer.MAX_VALUE); 
       searcher.search(query, completeCollector);
   
       reader.close();
       w.close();
       dir.close();
     }
   ```
   
   I guess I'm fine either way? If you prefer a more focused test, I can 
replace it with the above one.




-- 
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-unsubscr...@lucene.apache.org

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



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

Reply via email to