@@ -337,33 +337,40 @@ public void testExtractTermsAndRanges() throws Exception {
337337
338338
339339 public void testCreateCandidateQuery () throws Exception {
340- addQueryFieldMappings ();
341-
342- MemoryIndex memoryIndex = new MemoryIndex (false );
343- StringBuilder text = new StringBuilder ();
344- for (int i = 0 ; i < 1022 ; i ++) {
345- text .append (i ).append (' ' );
340+ int origMaxClauseCount = BooleanQuery .getMaxClauseCount ();
341+ try {
342+ final int maxClauseCount = 100 ;
343+ BooleanQuery .setMaxClauseCount (maxClauseCount );
344+ addQueryFieldMappings ();
345+
346+ MemoryIndex memoryIndex = new MemoryIndex (false );
347+ StringBuilder text = new StringBuilder ();
348+ for (int i = 0 ; i < maxClauseCount - 2 ; i ++) {
349+ text .append (i ).append (' ' );
350+ }
351+ memoryIndex .addField ("field1" , text .toString (), new WhitespaceAnalyzer ());
352+ memoryIndex .addField (new LongPoint ("field2" , 10L ), new WhitespaceAnalyzer ());
353+ IndexReader indexReader = memoryIndex .createSearcher ().getIndexReader ();
354+
355+ Tuple <BooleanQuery , Boolean > t = fieldType .createCandidateQuery (indexReader , Version .CURRENT );
356+ assertTrue (t .v2 ());
357+ assertEquals (2 , t .v1 ().clauses ().size ());
358+ assertThat (t .v1 ().clauses ().get (0 ).getQuery (), instanceOf (CoveringQuery .class ));
359+ assertThat (t .v1 ().clauses ().get (1 ).getQuery (), instanceOf (TermQuery .class ));
360+
361+ // Now push it over the edge, so that it falls back using TermInSetQuery
362+ memoryIndex .addField ("field2" , "value" , new WhitespaceAnalyzer ());
363+ indexReader = memoryIndex .createSearcher ().getIndexReader ();
364+ t = fieldType .createCandidateQuery (indexReader , Version .CURRENT );
365+ assertFalse (t .v2 ());
366+ assertEquals (3 , t .v1 ().clauses ().size ());
367+ TermInSetQuery terms = (TermInSetQuery ) t .v1 ().clauses ().get (0 ).getQuery ();
368+ assertEquals (maxClauseCount - 1 , terms .getTermData ().size ());
369+ assertThat (t .v1 ().clauses ().get (1 ).getQuery ().toString (), containsString (fieldName + ".range_field:<ranges:" ));
370+ assertThat (t .v1 ().clauses ().get (2 ).getQuery ().toString (), containsString (fieldName + ".extraction_result:failed" ));
371+ } finally {
372+ BooleanQuery .setMaxClauseCount (origMaxClauseCount );
346373 }
347- memoryIndex .addField ("field1" , text .toString (), new WhitespaceAnalyzer ());
348- memoryIndex .addField (new LongPoint ("field2" , 10L ), new WhitespaceAnalyzer ());
349- IndexReader indexReader = memoryIndex .createSearcher ().getIndexReader ();
350-
351- Tuple <BooleanQuery , Boolean > t = fieldType .createCandidateQuery (indexReader , Version .CURRENT );
352- assertTrue (t .v2 ());
353- assertEquals (2 , t .v1 ().clauses ().size ());
354- assertThat (t .v1 ().clauses ().get (0 ).getQuery (), instanceOf (CoveringQuery .class ));
355- assertThat (t .v1 ().clauses ().get (1 ).getQuery (), instanceOf (TermQuery .class ));
356-
357- // Now push it over the edge, so that it falls back using TermInSetQuery
358- memoryIndex .addField ("field2" , "value" , new WhitespaceAnalyzer ());
359- indexReader = memoryIndex .createSearcher ().getIndexReader ();
360- t = fieldType .createCandidateQuery (indexReader , Version .CURRENT );
361- assertFalse (t .v2 ());
362- assertEquals (3 , t .v1 ().clauses ().size ());
363- TermInSetQuery terms = (TermInSetQuery ) t .v1 ().clauses ().get (0 ).getQuery ();
364- assertEquals (1023 , terms .getTermData ().size ());
365- assertThat (t .v1 ().clauses ().get (1 ).getQuery ().toString (), containsString (fieldName + ".range_field:<ranges:" ));
366- assertThat (t .v1 ().clauses ().get (2 ).getQuery ().toString (), containsString (fieldName + ".extraction_result:failed" ));
367374 }
368375
369376 public void testExtractTermsAndRanges_numberFields () throws Exception {
0 commit comments