Index: modules/analysis/common/src/test/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzerTest.java =================================================================== --- modules/analysis/common/src/test/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzerTest.java (revision 1065648) +++ modules/analysis/common/src/test/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzerTest.java (working copy) @@ -76,7 +76,7 @@ private int search(Analyzer a, String queryString) throws IOException, ParseException { QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "repetitiveField", a); Query q = qp.parse(queryString); - return new IndexSearcher(reader).search(q, null, 1000).totalHits; + return newSearcher(reader).search(q, null, 1000).totalHits; } public void testUninitializedAnalyzer() throws Exception { Index: modules/analysis/common/src/test/org/apache/lucene/collation/CollationTestBase.java =================================================================== --- modules/analysis/common/src/test/org/apache/lucene/collation/CollationTestBase.java (revision 1065648) +++ modules/analysis/common/src/test/org/apache/lucene/collation/CollationTestBase.java (working copy) @@ -141,7 +141,7 @@ writer.close(); IndexReader reader = IndexReader.open(farsiIndex, true); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); // Unicode order would include U+0633 in [ U+062F - U+0698 ], but Farsi // orders the U+0698 character before the U+0633 character, so the single Index: lucene/src/test/org/apache/lucene/queryParser/TestQueryParser.java =================================================================== --- lucene/src/test/org/apache/lucene/queryParser/TestQueryParser.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/queryParser/TestQueryParser.java (working copy) @@ -1142,7 +1142,7 @@ w.addDocument(doc); IndexReader r = IndexReader.open(w, true); w.close(); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "f", a); Query q = qp.parse("\"wizard of ozzy\""); assertEquals(1, s.search(q, 1).totalHits); Index: lucene/src/test/org/apache/lucene/TestExternalCodecs.java =================================================================== --- lucene/src/test/org/apache/lucene/TestExternalCodecs.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/TestExternalCodecs.java (working copy) @@ -670,7 +670,7 @@ testTermsOrder(r); assertEquals(NUM_DOCS-1, r.numDocs()); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); assertEquals(NUM_DOCS-1, s.search(new TermQuery(new Term("field1", "standard")), 1).totalHits); assertEquals(NUM_DOCS-1, s.search(new TermQuery(new Term("field2", "pulsing")), 1).totalHits); r.close(); @@ -681,7 +681,7 @@ r = IndexReader.open(w, true); assertEquals(NUM_DOCS-2, r.maxDoc()); assertEquals(NUM_DOCS-2, r.numDocs()); - s = new IndexSearcher(r); + s = newSearcher(r); assertEquals(NUM_DOCS-2, s.search(new TermQuery(new Term("field1", "standard")), 1).totalHits); assertEquals(NUM_DOCS-2, s.search(new TermQuery(new Term("field2", "pulsing")), 1).totalHits); assertEquals(1, s.search(new TermQuery(new Term("id", "76")), 1).totalHits); Index: lucene/src/test/org/apache/lucene/search/TestFuzzyQuery2.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestFuzzyQuery2.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestFuzzyQuery2.java (working copy) @@ -91,7 +91,7 @@ } IndexReader r = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(r); + IndexSearcher searcher = newSearcher(r); writer.close(); String line; while ((line = reader.readLine()) != null) { Index: lucene/src/test/org/apache/lucene/search/TestNot.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestNot.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestNot.java (working copy) @@ -44,7 +44,7 @@ writer.addDocument(d1); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); QueryParser parser = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer()); Query query = parser.parse("a NOT b"); //System.out.println(query); Index: lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (working copy) @@ -82,7 +82,7 @@ } reader = iw.getReader(); iw.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); String qtxt = "one"; // start from 1, so that the 0th doc never matches Index: lucene/src/test/org/apache/lucene/search/TestPrefixFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPrefixFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPrefixFilter.java (working copy) @@ -48,7 +48,7 @@ // PrefixFilter combined with ConstantScoreQuery PrefixFilter filter = new PrefixFilter(new Term("category", "/Computers")); Query query = new ConstantScoreQuery(filter); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; assertEquals(4, hits.length); Index: lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (working copy) @@ -170,7 +170,7 @@ // but we use .reopen on this reader below and expect to // (must) get an NRT reader: IndexReader reader = IndexReader.open(writer.w, true); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // add a doc, refresh the reader, and check that its there Document doc = new Document(); @@ -178,7 +178,7 @@ writer.addDocument(doc); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); TopDocs docs = searcher.search(new MatchAllDocsQuery(), 1); assertEquals("Should find a hit...", 1, docs.totalHits); @@ -198,7 +198,7 @@ writer.deleteDocuments(new Term("id", "1")); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should *not* find a hit...", 0, docs.totalHits); @@ -213,7 +213,7 @@ writer.addDocument(doc); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); @@ -232,7 +232,7 @@ // that had no change to deletions reader = refreshReader(reader); assertTrue(reader != oldReader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); int missCount = filter.missCount; docs = searcher.search(constantScore, 1); assertEquals("[just filter] Should find a hit...", 1, docs.totalHits); @@ -242,7 +242,7 @@ writer.deleteDocuments(new Term("id", "1")); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); missCount = filter.missCount; docs = searcher.search(new MatchAllDocsQuery(), filter, 1); @@ -257,7 +257,7 @@ writer.addDocument(doc); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should find a hit...", 1, docs.totalHits); @@ -269,7 +269,7 @@ writer.deleteDocuments(new Term("id", "1")); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should *not* find a hit...", 0, docs.totalHits); Index: lucene/src/test/org/apache/lucene/search/TestAutomatonQueryUnicode.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestAutomatonQueryUnicode.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestAutomatonQueryUnicode.java (working copy) @@ -82,7 +82,7 @@ field.setValue("\uFFFD\uFFFD"); writer.addDocument(doc); reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java (working copy) @@ -73,7 +73,7 @@ w.addDocument(doc); IndexReader r = w.getReader(); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("field", "a")), BooleanClause.Occur.SHOULD); Index: lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (working copy) @@ -86,7 +86,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); query = new PhraseQuery(); } @@ -221,7 +221,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // valid exact phrase query PhraseQuery query = new PhraseQuery(); @@ -262,7 +262,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.add(new Term("source", "marketing")); @@ -301,7 +301,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); termQuery = new TermQuery(new Term("contents","woo")); phraseQuery = new PhraseQuery(); @@ -352,7 +352,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); PhraseQuery query = new PhraseQuery(); query.add(new Term("field", "firstname")); query.add(new Term("field", "lastname")); @@ -649,7 +649,7 @@ } IndexReader reader = w.getReader(); - IndexSearcher s = new IndexSearcher(reader); + IndexSearcher s = newSearcher(reader); w.close(); // now search Index: lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java (working copy) @@ -96,7 +96,7 @@ writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); DocsAndPositionsEnum pos = MultiFields.getTermPositionsEnum(searcher.getIndexReader(), MultiFields.getDeletedDocs(searcher.getIndexReader()), @@ -264,7 +264,7 @@ // only one doc has "a" assertEquals(DocsAndPositionsEnum.NO_MORE_DOCS, tp.nextDoc()); - IndexSearcher is = new IndexSearcher(readerFromWriter); + IndexSearcher is = newSearcher(readerFromWriter); SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a")); SpanTermQuery stq2 = new SpanTermQuery(new Term("content", "k")); Index: lucene/src/test/org/apache/lucene/search/TestSearchWithThreads.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSearchWithThreads.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSearchWithThreads.java (working copy) @@ -63,7 +63,7 @@ final long endTime = System.currentTimeMillis(); if (VERBOSE) System.out.println("BUILD took " + (endTime-startTime)); - final IndexSearcher s = new IndexSearcher(r); + final IndexSearcher s = newSearcher(r); final AtomicBoolean failed = new AtomicBoolean(); final AtomicLong netSearch = new AtomicLong(); Index: lucene/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java (working copy) @@ -121,7 +121,7 @@ IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); TopDocs td = searcher.search(query,null,10); //System.out.println("slop: "+slop+" query: "+query+" doc: "+doc+" Expecting number of hits: "+expectedNumResults+" maxScore="+td.getMaxScore()); assertEquals("slop: "+slop+" query: "+query+" doc: "+doc+" Wrong number of hits", expectedNumResults, td.totalHits); Index: lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (working copy) @@ -65,7 +65,7 @@ } r = w.getReader(); - s = new IndexSearcher(r); + s = newSearcher(r); w.close(); //System.out.println("Set up " + getName()); } Index: lucene/src/test/org/apache/lucene/search/TestBooleanOr.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestBooleanOr.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestBooleanOr.java (working copy) @@ -154,7 +154,7 @@ reader = writer.getReader(); // - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestDateSort.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestDateSort.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestDateSort.java (working copy) @@ -28,7 +28,6 @@ import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.RandomIndexWriter; import org.apache.lucene.queryParser.QueryParser; -import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.Sort; import org.apache.lucene.search.SortField; @@ -78,7 +77,7 @@ } public void testReverseDateSort() throws Exception { - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); Sort sort = new Sort(new SortField(DATE_TIME_FIELD, SortField.STRING, true)); Index: lucene/src/test/org/apache/lucene/search/TestSort.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSort.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSort.java (working copy) @@ -144,7 +144,7 @@ } IndexReader reader = writer.getReader(); writer.close (); - IndexSearcher s = new IndexSearcher (reader); + IndexSearcher s = newSearcher(reader); s.setDefaultFieldSortScoring(true, true); return s; } @@ -1061,7 +1061,7 @@ IndexReader r = IndexReader.open(w, true); w.close(); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); TopDocs hits = s.search(new TermQuery(new Term("t", "1")), null, 10, new Sort(new SortField("f", SortField.STRING))); assertEquals(2, hits.totalHits); // null sorts first @@ -1105,7 +1105,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); TotalHitCountCollector c = new TotalHitCountCollector(); searcher.search(new MatchAllDocsQuery(), null, c); assertEquals(5, c.getTotalHits()); Index: lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java (working copy) @@ -151,7 +151,7 @@ public void testEqualScores() throws IOException { // NOTE: uses index build in *this* setUp - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); ScoreDoc[] result; @@ -174,13 +174,14 @@ result[i].score); } + search.close(); } @Test public void testBoost() throws IOException { // NOTE: uses index build in *this* setUp - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); // test for correct application of query normalization // must use a non score normalizing method for this. @@ -246,13 +247,14 @@ Assert.assertEquals(0, hits[0].doc); Assert.assertEquals(1, hits[1].doc); assertTrue(hits[0].score > hits[1].score); + search.close(); } @Test public void testBooleanOrderUnAffected() throws IOException { // NOTE: uses index build in *this* setUp - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); // first do a regular TermRangeQuery which uses term expansion so // docs with more terms in range get higher scores @@ -277,6 +279,7 @@ actual[i].doc); } + search.close(); } @Test @@ -284,7 +287,7 @@ // NOTE: uses index build in *super* setUp IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int medId = ((maxId - minId) / 2); @@ -405,6 +408,8 @@ result = search.search(csrq("id", medIP, medIP, T, T, MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT), null, numDocs).scoreDocs; assertEquals("med,med,T,T", 1, result.length); + + search.close(); } @Test @@ -412,7 +417,7 @@ // NOTE: uses index build in *super* setUp IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int medId = ((maxId - minId) / 2); @@ -489,6 +494,8 @@ result = search.search(csrq("id", medIP, medIP, T, T, c), null, numDocs).scoreDocs; assertEquals("med,med,T,T,c", 1, result.length); + + search.close(); } @Test @@ -496,7 +503,7 @@ // NOTE: uses index build in *super* setUp IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); String minRP = pad(signedIndexDir.minR); String maxRP = pad(signedIndexDir.maxR); @@ -552,6 +559,7 @@ result = search.search(csrq("rand", maxRP, null, T, F), null, numDocs).scoreDocs; assertEquals("max,nul,T,T", 1, result.length); + search.close(); } @Test @@ -560,7 +568,7 @@ // using the unsigned index because collation seems to ignore hyphens IndexReader reader = unsignedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); String minRP = pad(unsignedIndexDir.minR); String maxRP = pad(unsignedIndexDir.maxR); @@ -617,6 +625,8 @@ assertEquals("max,max,T,T,c", 1, result.length); result = search.search(csrq("rand", maxRP, null, T, F, c), null, numDocs).scoreDocs; assertEquals("max,nul,T,T,c", 1, result.length); + + search.close(); } @Test @@ -636,7 +646,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); // Neither Java 1.4.2 nor 1.5.0 has Farsi Locale collation available in // RuleBasedCollator. However, the Arabic Locale seems to order the Farsi @@ -681,7 +691,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); Collator c = Collator.getInstance(new Locale("da", "dk")); Index: lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java (working copy) @@ -61,7 +61,7 @@ } reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (working copy) @@ -117,7 +117,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); searcher.setSimilarityProvider(similarity); } Index: lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (working copy) @@ -124,7 +124,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); searcher.setSimilarityProvider(similarity); } Index: lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java =================================================================== --- lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (working copy) @@ -25,6 +25,7 @@ import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.util.English; +import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.index.IndexReader; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.SimilarityProvider; @@ -129,7 +130,7 @@ reader = IndexReader.open(writer, true); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = LuceneTestCase.newSearcher(reader); searcher.setSimilarityProvider(similarity); return searcher; } Index: lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java (working copy) @@ -61,17 +61,17 @@ writer.close(); swriter1.close(); swriter2.close(); reader = IndexReader.open(dir, true); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); multiReader = new MultiReader(new IndexReader[] { IndexReader.open(sdir1, true), IndexReader.open(sdir2, true) }, true); - multiSearcher = new IndexSearcher(multiReader); + multiSearcher = newSearcher(multiReader); multiReaderDupls = new MultiReader(new IndexReader[] { IndexReader.open(sdir1, true), IndexReader.open(dir, true) }, true); - multiSearcherDupls = new IndexSearcher(multiReaderDupls); + multiSearcherDupls = newSearcher(multiReaderDupls); } @AfterClass Index: lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java (working copy) @@ -56,7 +56,7 @@ query.add(booleanQuery1, BooleanClause.Occur.MUST); query.add(new TermQuery(new Term(FIELD, "9")), BooleanClause.Occur.MUST_NOT); - IndexSearcher indexSearcher = new IndexSearcher(ir); + IndexSearcher indexSearcher = newSearcher(ir); ScoreDoc[] hits = indexSearcher.search(query, null, 1000).scoreDocs; assertEquals("Number of matched documents", 2, hits.length); ir.close(); @@ -74,7 +74,7 @@ writer.commit(); IndexReader ir = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(ir); + IndexSearcher searcher = newSearcher(ir); BooleanWeight weight = (BooleanWeight) new BooleanQuery().createWeight(searcher); Scorer[] scorers = new Scorer[] {new Scorer(weight) { private int doc = -1; Index: lucene/src/test/org/apache/lucene/search/TestDocIdSet.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestDocIdSet.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestDocIdSet.java (working copy) @@ -109,7 +109,7 @@ writer.close(); // First verify the document is searchable. - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); Assert.assertEquals(1, searcher.search(new MatchAllDocsQuery(), 10).totalHits); // Now search w/ a Filter which returns a null DocIdSet Index: lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (working copy) @@ -65,7 +65,7 @@ } reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } protected String[] docFields = { Index: lucene/src/test/org/apache/lucene/search/spans/TestSpanFirstQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpanFirstQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpanFirstQuery.java (working copy) @@ -48,7 +48,7 @@ writer.addDocument(doc2); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // user queries on "starts-with quick" SpanQuery sfq = new SpanFirstQuery(new SpanTermQuery(new Term("field", "quick")), 1); Index: lucene/src/test/org/apache/lucene/search/spans/TestBasics.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (working copy) @@ -77,7 +77,7 @@ writer.addDocument(doc); } reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/spans/TestSpans.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (working copy) @@ -61,7 +61,7 @@ } reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override @@ -486,7 +486,7 @@ // Get searcher final IndexReader reader = IndexReader.open(dir, true); - final IndexSearcher searcher = new IndexSearcher(reader); + final IndexSearcher searcher = newSearcher(reader); // Control (make sure docs indexed) assertEquals(2, hitCount(searcher, "the")); Index: lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (working copy) @@ -112,7 +112,7 @@ field("last", "jones") })); reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java (working copy) @@ -66,7 +66,7 @@ addDocument(writer, "4", "I think it should work."); reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/src/test/org/apache/lucene/search/spans/TestSpanMultiTermQueryWrapper.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpanMultiTermQueryWrapper.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpanMultiTermQueryWrapper.java (working copy) @@ -53,7 +53,7 @@ iw.addDocument(doc); reader = iw.getReader(); iw.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced2.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced2.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced2.java (working copy) @@ -57,7 +57,7 @@ writer.close(); // re-open the searcher since we added more docs - searcher2 = new IndexSearcher(reader2); + searcher2 = newSearcher(reader2); } @Override Index: lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (working copy) @@ -262,7 +262,7 @@ writer.addDocument(doc); IndexReader reader = writer.getReader(); - IndexSearcher is = new IndexSearcher(reader); + IndexSearcher is = newSearcher(reader); writer.close(); SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a")); @@ -299,7 +299,7 @@ doc.add(new Field("content", new StringReader("a b a d k f a h i k a k"))); writer.addDocument(doc); IndexReader reader = writer.getReader(); - IndexSearcher is = new IndexSearcher(reader); + IndexSearcher is = newSearcher(reader); writer.close(); SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a")); @@ -335,7 +335,7 @@ doc.add(new Field("content", new StringReader("j k a l f k k p a t a k l k t a"))); writer.addDocument(doc); IndexReader reader = writer.getReader(); - IndexSearcher is = new IndexSearcher(reader); + IndexSearcher is = newSearcher(reader); writer.close(); SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a")); @@ -378,7 +378,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); PayloadSpanUtil psu = new PayloadSpanUtil(searcher.getTopReaderContext()); @@ -443,7 +443,7 @@ closeIndexReader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(closeIndexReader); + IndexSearcher searcher = newSearcher(closeIndexReader); return searcher; } Index: lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (working copy) @@ -54,7 +54,7 @@ w.addDocument(doc); } - s = new IndexSearcher(w.getReader()); + s = newSearcher(w.getReader()); w.close(); } Index: lucene/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java (working copy) @@ -43,7 +43,7 @@ // should not throw exception with primitive query QueryWrapperFilter qwf = new QueryWrapperFilter(termQuery); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); TopDocs hits = searcher.search(new MatchAllDocsQuery(), qwf, 10); assertEquals(1, hits.totalHits); hits = searcher.search(new MatchAllDocsQuery(), new CachingWrapperFilter(qwf), 10); Index: lucene/src/test/org/apache/lucene/search/TestTermVectors.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTermVectors.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTermVectors.java (working copy) @@ -71,7 +71,7 @@ } reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override @@ -246,7 +246,7 @@ writer.addDocument(testDoc4); IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher knownSearcher = new IndexSearcher(reader); + IndexSearcher knownSearcher = newSearcher(reader); FieldsEnum fields = MultiFields.getFields(knownSearcher.reader).iterator(); DocsEnum docs = null; @@ -378,7 +378,7 @@ } IndexReader reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); Query query = new TermQuery(new Term("field", "hundred")); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; @@ -414,7 +414,7 @@ IndexReader reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); Query query = new TermQuery(new Term("field", "one")); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; Index: lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java (working copy) @@ -104,7 +104,7 @@ writer.commit(); IndexReader ir = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(ir); + IndexSearcher searcher = newSearcher(ir); Weight fake = new TermQuery(new Term("fake", "weight")).createWeight(searcher); Scorer s = new SimpleScorer(fake); ScoreCachingCollector scc = new ScoreCachingCollector(scores.length); Index: lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java (working copy) @@ -59,7 +59,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher=new IndexSearcher(reader); + IndexSearcher searcher=newSearcher(reader); num = 50 * RANDOM_MULTIPLIER; for (int i = 0; i < num; i++) { int lower=random.nextInt(Integer.MAX_VALUE); Index: lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java (working copy) @@ -95,7 +95,7 @@ private TopDocsCollector doSearch(int numResults) throws IOException { Query q = new MatchAllDocsQuery(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); TopDocsCollector tdc = new MyTopsDocCollector(numResults); searcher.search(q, tdc); searcher.close(); Index: lucene/src/test/org/apache/lucene/search/TestTermScorer.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTermScorer.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTermScorer.java (working copy) @@ -57,7 +57,7 @@ } indexReader = new SlowMultiReaderWrapper(writer.getReader()); writer.close(); - indexSearcher = new IndexSearcher(indexReader); + indexSearcher = newSearcher(indexReader); } @Override Index: lucene/src/test/org/apache/lucene/search/TestPhrasePrefixQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPhrasePrefixQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPhrasePrefixQuery.java (working copy) @@ -65,7 +65,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // PhrasePrefixQuery query1 = new PhrasePrefixQuery(); MultiPhraseQuery query1 = new MultiPhraseQuery(); Index: lucene/src/test/org/apache/lucene/search/TestAutomatonQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestAutomatonQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestAutomatonQuery.java (working copy) @@ -62,7 +62,7 @@ + " with numbers 1234 5678.9 and letter b"); writer.addDocument(doc); reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestBoolean2.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestBoolean2.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestBoolean2.java (working copy) @@ -92,7 +92,7 @@ w.addDocument(doc); } reader = w.getReader(); - bigSearcher = new IndexSearcher(reader); + bigSearcher = newSearcher(reader); w.close(); } Index: lucene/src/test/org/apache/lucene/search/TestExplanations.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestExplanations.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestExplanations.java (working copy) @@ -77,7 +77,7 @@ } reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } protected String[] docFields = { Index: lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (working copy) @@ -94,7 +94,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); // set a similarity that does not normalize our boost away searcher.setSimilarityProvider(new DefaultSimilarity() { Index: lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java (working copy) @@ -82,7 +82,7 @@ } reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java (working copy) @@ -50,7 +50,7 @@ addDoc("ddddd", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); writer.close(); FuzzyQuery query = new FuzzyQuery(new Term("field", "aaaaa"), FuzzyQuery.defaultMinSimilarity, 0); @@ -198,7 +198,7 @@ addDoc("segment", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); writer.close(); FuzzyQuery query; @@ -309,7 +309,7 @@ IndexReader ir2 = writer2.getReader(); MultiReader mr = new MultiReader(ir1, ir2); - IndexSearcher searcher = new IndexSearcher(mr); + IndexSearcher searcher = newSearcher(mr); FuzzyQuery fq = new FuzzyQuery(new Term("field", "z123456"), 1f, 0, 2); TopDocs docs = searcher.search(fq, 2); assertEquals(5, docs.totalHits); // 5 docs, from the a and b's @@ -330,7 +330,7 @@ addDoc("segment", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); writer.close(); Query query; @@ -368,7 +368,7 @@ addDoc("Lucenne", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); writer.close(); FuzzyQuery query = new FuzzyQuery(new Term("field", "lucene")); @@ -413,7 +413,7 @@ Query q = new QueryParser(TEST_VERSION_CURRENT, "field", analyzer).parse( "giga~0.9" ); // 3. search - IndexSearcher searcher = new IndexSearcher(r); + IndexSearcher searcher = newSearcher(r); ScoreDoc[] hits = searcher.search(q, 10).scoreDocs; assertEquals(1, hits.length); assertEquals("Giga byte", searcher.doc(hits[0].doc).get("field")); @@ -435,7 +435,7 @@ addDoc("test", w); addDoc("working", w); IndexReader reader = w.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); w.close(); QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer()); Index: lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java (working copy) @@ -54,7 +54,7 @@ writer.addDocument(doc); reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/src/test/org/apache/lucene/search/TestDateFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestDateFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestDateFilter.java (working copy) @@ -57,7 +57,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // filter that should preserve matches // DateFilter df1 = DateFilter.Before("datefield", now); @@ -123,7 +123,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // filter that should preserve matches // DateFilter df1 = DateFilter.After("datefield", now); Index: lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java (working copy) @@ -47,7 +47,7 @@ iw.close(); IndexReader ir = IndexReader.open(dir, false); - IndexSearcher is = new IndexSearcher(ir); + IndexSearcher is = newSearcher(ir); ScoreDoc[] hits; // assert with norms scoring turned off @@ -93,7 +93,7 @@ assertEquals(1, hits.length); // delete a document: - is.getIndexReader().deleteDocument(0); + ir.deleteDocument(0); hits = is.search(new MatchAllDocsQuery(), null, 1000).scoreDocs; assertEquals(2, hits.length); Index: lucene/src/test/org/apache/lucene/search/TestCachingSpanFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestCachingSpanFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestCachingSpanFilter.java (working copy) @@ -48,7 +48,7 @@ // but we use .reopen on this reader below and expect to // (must) get an NRT reader: IndexReader reader = IndexReader.open(writer.w, true); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // add a doc, refresh the reader, and check that its there Document doc = new Document(); @@ -56,7 +56,8 @@ writer.addDocument(doc); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher.close(); + searcher = newSearcher(reader); TopDocs docs = searcher.search(new MatchAllDocsQuery(), 1); assertEquals("Should find a hit...", 1, docs.totalHits); @@ -76,7 +77,8 @@ writer.deleteDocuments(new Term("id", "1")); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher.close(); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should *not* find a hit...", 0, docs.totalHits); @@ -90,7 +92,8 @@ writer.addDocument(doc); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher.close(); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should find a hit...", 1, docs.totalHits); @@ -108,7 +111,8 @@ // that had no new deletions reader = refreshReader(reader); assertTrue(reader != oldReader); - searcher = new IndexSearcher(reader); + searcher.close(); + searcher = newSearcher(reader); int missCount = filter.missCount; docs = searcher.search(constantScore, 1); assertEquals("[just filter] Should find a hit...", 1, docs.totalHits); @@ -118,7 +122,8 @@ writer.deleteDocuments(new Term("id", "1")); reader = refreshReader(reader); - searcher = new IndexSearcher(reader); + searcher.close(); + searcher = newSearcher(reader); docs = searcher.search(new MatchAllDocsQuery(), filter, 1); assertEquals("[query + filter] Should *not* find a hit...", 0, docs.totalHits); @@ -132,6 +137,7 @@ // entry: assertTrue(oldReader != null); + searcher.close(); writer.close(); reader.close(); dir.close(); Index: lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (working copy) @@ -149,7 +149,7 @@ r = new SlowMultiReaderWrapper(writer.getReader()); writer.close(); - s = new IndexSearcher(r); + s = newSearcher(r); s.setSimilarityProvider(sim); } Index: lucene/src/test/org/apache/lucene/search/TestSimilarity.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSimilarity.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSimilarity.java (working copy) @@ -80,7 +80,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); searcher.setSimilarityProvider(new SimpleSimilarity()); Term a = new Term("field", "a"); Index: lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (working copy) @@ -44,7 +44,7 @@ public void testRangeFilterId() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int medId = ((maxId - minId) / 2); @@ -122,14 +122,14 @@ result = search.search(q,FieldCacheRangeFilter.newStringRange("id",medIP,medIP,T,T), numDocs).scoreDocs; assertEquals("med,med,T,T", 1, result.length); - + search.close(); } @Test public void testFieldCacheRangeFilterRand() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); String minRP = pad(signedIndexDir.minR); String maxRP = pad(signedIndexDir.maxR); @@ -185,6 +185,7 @@ assertEquals("max,max,T,T", 1, result.length); result = search.search(q,FieldCacheRangeFilter.newStringRange("rand",maxRP,null,T,F), numDocs).scoreDocs; assertEquals("max,nul,T,T", 1, result.length); + search.close(); } // byte-ranges cannot be tested, because all ranges are too big for bytes, need an extra range for that @@ -193,7 +194,7 @@ public void testFieldCacheRangeFilterShorts() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); int medId = ((maxId - minId) / 2); @@ -277,13 +278,14 @@ assertEquals("overflow special case", 0, result.length); result = search.search(q,FieldCacheRangeFilter.newShortRange("id",maxIdO,minIdO,T,T), numDocs).scoreDocs; assertEquals("inverse range", 0, result.length); + search.close(); } @Test public void testFieldCacheRangeFilterInts() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); int medId = ((maxId - minId) / 2); @@ -368,13 +370,14 @@ assertEquals("overflow special case", 0, result.length); result = search.search(q,FieldCacheRangeFilter.newIntRange("id",maxIdO,minIdO,T,T), numDocs).scoreDocs; assertEquals("inverse range", 0, result.length); + search.close(); } @Test public void testFieldCacheRangeFilterLongs() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); int medId = ((maxId - minId) / 2); @@ -459,6 +462,7 @@ assertEquals("overflow special case", 0, result.length); result = search.search(q,FieldCacheRangeFilter.newLongRange("id",maxIdO,minIdO,T,T), numDocs).scoreDocs; assertEquals("inverse range", 0, result.length); + search.close(); } // float and double tests are a bit minimalistic, but its complicated, because missing precision @@ -467,7 +471,7 @@ public void testFieldCacheRangeFilterFloats() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); Float minIdO = Float.valueOf(minId + .5f); @@ -490,13 +494,14 @@ assertEquals("infinity special case", 0, result.length); result = search.search(q,FieldCacheRangeFilter.newFloatRange("id",null,Float.valueOf(Float.NEGATIVE_INFINITY),F,F), numDocs).scoreDocs; assertEquals("infinity special case", 0, result.length); + search.close(); } @Test public void testFieldCacheRangeFilterDoubles() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); Double minIdO = Double.valueOf(minId + .5); @@ -519,6 +524,7 @@ assertEquals("infinity special case", 0, result.length); result = search.search(q,FieldCacheRangeFilter.newDoubleRange("id",null, Double.valueOf(Double.NEGATIVE_INFINITY),F,F), numDocs).scoreDocs; assertEquals("infinity special case", 0, result.length); + search.close(); } // test using a sparse index (with deleted docs). @@ -539,7 +545,7 @@ writer.close(); IndexReader reader = IndexReader.open(dir, true); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); assertTrue(reader.hasDeletions()); ScoreDoc[] result; @@ -559,6 +565,7 @@ result = search.search(q,FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) -20),Byte.valueOf((byte) -10),T,T), 100).scoreDocs; assertEquals("find all", 11, result.length); + search.close(); reader.close(); dir.close(); } Index: lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java (working copy) @@ -62,7 +62,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } private char N() { Index: lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java (working copy) @@ -47,7 +47,7 @@ // the clause instead of BQ. bq.setMinimumNumberShouldMatch(1); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); for (int i = 0; i < inOrder.length; i++) { TopDocsCollector tdc = TopScoreDocCollector.create(3, inOrder[i]); assertEquals("org.apache.lucene.search.TopScoreDocCollector$" + actualTSDCClass[i], tdc.getClass().getName()); Index: lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java (working copy) @@ -65,7 +65,7 @@ writer.addDocument(doc); } reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestSimilarityProvider.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSimilarityProvider.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestSimilarityProvider.java (working copy) @@ -56,7 +56,7 @@ iw.addDocument(doc); reader = iw.getReader(); iw.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); searcher.setSimilarityProvider(sim); } Index: lucene/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java (working copy) @@ -75,7 +75,7 @@ } reader = writer.getReader(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (working copy) @@ -89,7 +89,7 @@ } reader = writer.getReader(); - searcher=new IndexSearcher(reader); + searcher=newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestDocBoost.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestDocBoost.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestDocBoost.java (working copy) @@ -65,7 +65,7 @@ final float[] scores = new float[4]; - new IndexSearcher(reader).search + newSearcher(reader).search (new TermQuery(new Term("field", "word")), new Collector() { private int base = 0; Index: lucene/src/test/org/apache/lucene/search/TestElevationComparator.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestElevationComparator.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestElevationComparator.java (working copy) @@ -53,7 +53,7 @@ IndexReader r = IndexReader.open(writer, true); writer.close(); - IndexSearcher searcher = new IndexSearcher(r); + IndexSearcher searcher = newSearcher(r); runTest(searcher, true); runTest(searcher, false); Index: lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java (working copy) @@ -89,7 +89,7 @@ writer.addDocument(doc); } reader = writer.getReader(); - searcher=new IndexSearcher(reader); + searcher=newSearcher(reader); writer.close(); } Index: lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java (working copy) @@ -47,7 +47,7 @@ IndexReader reader = writer.getReader(); PrefixQuery query = new PrefixQuery(new Term("category", "/Computers")); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; assertEquals("All documents in /Computers category and below", 3, hits.length); Index: lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java (working copy) @@ -53,7 +53,7 @@ add("piccadilly circus", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // search for "blueberry pi*": MultiPhraseQuery query1 = new MultiPhraseQuery(); @@ -142,7 +142,7 @@ IndexReader r = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(r); + IndexSearcher searcher = newSearcher(r); MultiPhraseQuery q = new MultiPhraseQuery(); q.add(new Term("body", "blueberry")); q.add(new Term("body", "chocolate")); @@ -171,7 +171,7 @@ add("blue raspberry pie", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // This query will be equivalent to +body:pie +body:"blue*" BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("body", "pie")), BooleanClause.Occur.MUST); @@ -202,7 +202,7 @@ add("a note", "note", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // This query will be equivalent to +type:note +body:"a t*" BooleanQuery q = new BooleanQuery(); @@ -229,7 +229,7 @@ add("a note", "note", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); MultiPhraseQuery q = new MultiPhraseQuery(); q.add(new Term("body", "a")); @@ -294,7 +294,7 @@ add("a note", "note", writer); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); searcher.setSimilarityProvider(new DefaultSimilarity() { @Override Index: lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java (working copy) @@ -81,7 +81,7 @@ reader = writer.getReader(); writer.close (); - searcher = new IndexSearcher (reader); + searcher = newSearcher(reader); query = new TermQuery (new Term ("field", "three")); filter = newStaticFilterB(); } Index: lucene/src/test/org/apache/lucene/search/QueryUtils.java =================================================================== --- lucene/src/test/org/apache/lucene/search/QueryUtils.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/QueryUtils.java (working copy) @@ -21,6 +21,7 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.store.MockDirectoryWrapper; import org.apache.lucene.store.RAMDirectory; +import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.util.ReaderUtil; import static org.apache.lucene.util.LuceneTestCase.TEST_VERSION_CURRENT; @@ -158,7 +159,7 @@ IndexReader.open(makeEmptyIndex(random, 0), true), 0 < edge ? r : IndexReader.open(makeEmptyIndex(random, 0), true)) }; - IndexSearcher out = new IndexSearcher(new MultiReader(readers)); + IndexSearcher out = LuceneTestCase.newSearcher(new MultiReader(readers)); out.setSimilarityProvider(s.getSimilarityProvider()); return out; } @@ -318,7 +319,7 @@ // previous reader, hits NO_MORE_DOCS if (lastReader[0] != null) { final IndexReader previousReader = lastReader[0]; - IndexSearcher indexSearcher = new IndexSearcher(previousReader); + IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader); Weight w = q.weight(indexSearcher); Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def()); if (scorer != null) { @@ -343,7 +344,7 @@ // confirm that skipping beyond the last doc, on the // previous reader, hits NO_MORE_DOCS final IndexReader previousReader = lastReader[0]; - IndexSearcher indexSearcher = new IndexSearcher(previousReader); + IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader); Weight w = q.weight(indexSearcher); Scorer scorer = w.scorer((AtomicReaderContext)previousReader.getTopReaderContext(), ScorerContext.def()); if (scorer != null) { @@ -400,7 +401,7 @@ // previous reader, hits NO_MORE_DOCS if (lastReader[0] != null) { final IndexReader previousReader = lastReader[0]; - IndexSearcher indexSearcher = new IndexSearcher(previousReader); + IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader); Weight w = q.weight(indexSearcher); Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def()); if (scorer != null) { @@ -423,7 +424,7 @@ // confirm that skipping beyond the last doc, on the // previous reader, hits NO_MORE_DOCS final IndexReader previousReader = lastReader[0]; - IndexSearcher indexSearcher = new IndexSearcher(previousReader); + IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader); Weight w = q.weight(indexSearcher); Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def()); if (scorer != null) { Index: lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java (working copy) @@ -47,7 +47,7 @@ IndexReader reader = w.getReader(); w.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); int numDocs = reader.numDocs(); ScoreDoc[] results; MatchAllDocsQuery q = new MatchAllDocsQuery(); Index: lucene/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java (working copy) @@ -74,7 +74,7 @@ writer.commit(); IndexReader ir = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(ir); + IndexSearcher searcher = newSearcher(ir); Weight fake = new TermQuery(new Term("fake", "weight")).createWeight(searcher); Scorer s = new SimpleScorer(fake); TopDocsCollector tdc = TopScoreDocCollector.create(scores.length, true); Index: lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java (working copy) @@ -44,7 +44,7 @@ public void testRangeFilterId() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); int medId = ((maxId - minId) / 2); @@ -147,7 +147,7 @@ public void testRangeFilterIdCollating() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); Collator c = Collator.getInstance(Locale.ENGLISH); @@ -249,7 +249,7 @@ public void testRangeFilterRand() throws IOException { IndexReader reader = signedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); String minRP = pad(signedIndexDir.minR); String maxRP = pad(signedIndexDir.maxR); @@ -327,7 +327,7 @@ // using the unsigned index because collation seems to ignore hyphens IndexReader reader = unsignedIndexReader; - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); Collator c = Collator.getInstance(Locale.ENGLISH); @@ -417,7 +417,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); Query q = new TermQuery(new Term("body", "body")); // Neither Java 1.4.2 nor 1.5.0 has Farsi Locale collation available in @@ -461,7 +461,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher search = new IndexSearcher(reader); + IndexSearcher search = newSearcher(reader); Query q = new TermQuery(new Term("body", "body")); Collator collator = Collator.getInstance(new Locale("da", "dk")); Index: lucene/src/test/org/apache/lucene/index/TestIndexReader.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexReader.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexReader.java (working copy) @@ -900,7 +900,7 @@ { IndexReader r = IndexReader.open(startDir); - IndexSearcher searcher = new IndexSearcher(r); + IndexSearcher searcher = newSearcher(r); ScoreDoc[] hits = null; try { hits = searcher.search(new TermQuery(searchTerm), null, 1000).scoreDocs; @@ -908,6 +908,7 @@ e.printStackTrace(); fail("exception when init searching: " + e); } + searcher.close(); r.close(); } @@ -1023,7 +1024,7 @@ } */ - IndexSearcher searcher = new IndexSearcher(newReader); + IndexSearcher searcher = newSearcher(newReader); ScoreDoc[] hits = null; try { hits = searcher.search(new TermQuery(searchTerm), null, 1000).scoreDocs; Index: lucene/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java (working copy) @@ -177,7 +177,7 @@ IndexReader reader = IndexReader.open(startDir, true); assertEquals("first docFreq", 57, reader.docFreq(searchTerm)); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(new TermQuery(searchTerm), null, 1000).scoreDocs; assertEquals("first number of hits", 57, hits.length); searcher.close(); @@ -360,7 +360,7 @@ } } - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); try { hits = searcher.search(new TermQuery(searchTerm), null, END_COUNT).scoreDocs; } catch (IOException e) { Index: lucene/src/test/org/apache/lucene/index/TestIndexWriter.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (working copy) @@ -2817,7 +2817,7 @@ for(int x=0;x<2;x++) { IndexReader r = w.getReader(); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); if (VERBOSE) { System.out.println("TEST: cycle x=" + x + " r=" + r); Index: lucene/src/test/org/apache/lucene/index/TestCodecs.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestCodecs.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestCodecs.java (working copy) @@ -362,7 +362,7 @@ private ScoreDoc[] search(final IndexWriter writer, final Query q, final int n) throws IOException { final IndexReader reader = writer.getReader(); - final IndexSearcher searcher = new IndexSearcher(reader); + final IndexSearcher searcher = newSearcher(reader); try { return searcher.search(q, null, n).scoreDocs; } Index: lucene/src/test/org/apache/lucene/index/TestNRTThreads.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestNRTThreads.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestNRTThreads.java (working copy) @@ -88,7 +88,7 @@ } } - sum += new IndexSearcher(reader).search(new TermQuery(new Term("body", "united")), 10).totalHits; + sum += newSearcher(reader).search(new TermQuery(new Term("body", "united")), 10).totalHits; if (VERBOSE) { System.out.println("TEST: warm visited " + sum + " fields"); @@ -352,7 +352,7 @@ } final IndexReader r2 = writer.getReader(); - final IndexSearcher s = new IndexSearcher(r2); + final IndexSearcher s = newSearcher(r2); boolean doFail = false; for(String id : delIDs) { final TopDocs hits = s.search(new TermQuery(new Term("id", id)), 1); @@ -398,7 +398,7 @@ } private void smokeTestReader(IndexReader r) throws Exception { - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); runQuery(s, new TermQuery(new Term("body", "united"))); runQuery(s, new TermQuery(new Term("titleTokenized", "states"))); PhraseQuery pq = new PhraseQuery(); Index: lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java (working copy) @@ -718,7 +718,7 @@ // reader should remain usable even after IndexWriter is closed: assertEquals(100, r.numDocs()); Query q = new TermQuery(new Term("indexname", "test")); - assertEquals(100, new IndexSearcher(r).search(q, 10).totalHits); + assertEquals(100, newSearcher(r).search(q, 10).totalHits); try { r.reopen(); @@ -785,7 +785,7 @@ r = r2; } Query q = new TermQuery(new Term("indexname", "test")); - final int count = new IndexSearcher(r).search(q, 10).totalHits; + final int count = newSearcher(r).search(q, 10).totalHits; assertTrue(count >= lastCount); lastCount = count; } @@ -800,7 +800,7 @@ r = r2; } Query q = new TermQuery(new Term("indexname", "test")); - final int count = new IndexSearcher(r).search(q, 10).totalHits; + final int count = newSearcher(r).search(q, 10).totalHits; assertTrue(count >= lastCount); assertEquals(0, excs.size()); @@ -873,7 +873,7 @@ r = r2; } Query q = new TermQuery(new Term("indexname", "test")); - sum += new IndexSearcher(r).search(q, 10).totalHits; + sum += newSearcher(r).search(q, 10).totalHits; } for(int i=0;i 0); @@ -973,7 +973,7 @@ setMergedSegmentWarmer(new IndexWriter.IndexReaderWarmer() { @Override public void warm(IndexReader r) throws IOException { - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); TopDocs hits = s.search(new TermQuery(new Term("foo", "bar")), 10); assertEquals(20, hits.totalHits); didWarm.set(true); Index: lucene/src/test/org/apache/lucene/index/TestIndexWriterDelete.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (working copy) @@ -567,7 +567,7 @@ + e); } - IndexSearcher searcher = new IndexSearcher(newReader); + IndexSearcher searcher = newSearcher(newReader); ScoreDoc[] hits = null; try { hits = searcher.search(new TermQuery(searchTerm), null, 1000).scoreDocs; Index: lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java (working copy) @@ -773,7 +773,7 @@ // not synchronized IndexReader refreshed = r.reopen(); - IndexSearcher searcher = new IndexSearcher(refreshed); + IndexSearcher searcher = newSearcher(refreshed); ScoreDoc[] hits = searcher.search( new TermQuery(new Term("field1", "a" + rnd.nextInt(refreshed.maxDoc()))), null, 1000).scoreDocs; Index: lucene/src/test/org/apache/lucene/index/TestParallelReader.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestParallelReader.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestParallelReader.java (working copy) @@ -267,7 +267,7 @@ ParallelReader pr = new ParallelReader(); pr.add(IndexReader.open(dir1, false)); pr.add(IndexReader.open(dir2, false)); - return new IndexSearcher(pr); + return newSearcher(pr); } private Directory getDir1(Random random) throws IOException { Index: lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java (working copy) @@ -652,7 +652,7 @@ IndexReader reader = IndexReader.open(dir, policy, false); reader.deleteDocument(3*i+1); reader.setNorm(4*i+1, "content", conf.getSimilarityProvider().get("content").encodeNormValue(2.0F)); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; assertEquals(16*(1+i), hits.length); // this is a commit @@ -696,7 +696,7 @@ // Work backwards in commits on what the expected // count should be. - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); hits = searcher.search(query, null, 1000).scoreDocs; if (i > 1) { if (i % 2 == 0) { @@ -772,7 +772,7 @@ IndexReader reader = IndexReader.open(dir, policy, false); reader.deleteDocument(3); reader.setNorm(5, "content", conf.getSimilarityProvider().get("content").encodeNormValue(2.0F)); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; assertEquals(16, hits.length); // this is a commit @@ -807,7 +807,7 @@ // Work backwards in commits on what the expected // count should be. - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); hits = searcher.search(query, null, 1000).scoreDocs; assertEquals(expectedCount, hits.length); searcher.close(); Index: lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java (working copy) @@ -227,7 +227,7 @@ } IndexReader reader = IndexReader.open(dir, null, true, IndexReader.DEFAULT_TERMS_INDEX_DIVISOR, codecs); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); TopDocs search = searcher.search(new TermQuery(t), num + 10); assertEquals(num, search.totalHits); searcher.close(); Index: lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (working copy) @@ -409,7 +409,7 @@ // make sure we can do delete & setNorm against this segment: IndexReader reader = IndexReader.open(dir, false); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); Term searchTerm = new Term("id", "6"); int delCount = reader.deleteDocuments(searchTerm); assertEquals("wrong delete count", 1, delCount); Index: lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java (working copy) @@ -98,7 +98,7 @@ SegmentReader reader = getOnlySegmentReader(IndexReader.open(directory, false)); - this.searcher = new IndexSearcher(reader); + this.searcher = newSearcher(reader); } private ScoreDoc[] search() throws IOException { Index: lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java =================================================================== --- lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java (working copy) @@ -82,7 +82,7 @@ assertEquals(docsToAdd, reader.numDocs()); // open search zo check if all doc's are there - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // search for all documents for (int i = 0; i < docsToAdd; i++) { Index: lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java =================================================================== --- lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (working copy) @@ -271,7 +271,7 @@ assertEquals(reader.docFreq(bbb), 37); dir.tweakBufferSizes(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); ScoreDoc[] hits = searcher.search(new TermQuery(bbb), null, 1000).scoreDocs; dir.tweakBufferSizes(); assertEquals(35, hits.length); Index: lucene/src/test/org/apache/lucene/util/LuceneTestCase.java =================================================================== --- lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (working copy) @@ -28,6 +28,9 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -51,6 +54,7 @@ import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.FieldCache; import org.apache.lucene.search.FieldCache.CacheEntry; +import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.store.LockFactory; @@ -564,7 +568,9 @@ if (t.isAlive() && !rogueThreads.containsKey(t) && - t != Thread.currentThread()) { + t != Thread.currentThread() && + /* its ok to keep your searcher across test cases */ + (t.getName().startsWith("LuceneTestCase") && context.startsWith("test method")) == false) { System.err.println("WARNING: " + context + " left thread running: " + t); rogueThreads.put(t, true); rogueCount++; @@ -1018,6 +1024,30 @@ } } + /** create a new searcher over the reader */ + public static IndexSearcher newSearcher(IndexReader r) throws IOException { + if (random.nextBoolean()) { + return new IndexSearcher(r); + } else { + final ExecutorService ex = random.nextBoolean() ? null + : Executors.newFixedThreadPool(_TestUtil.nextInt(random, 1, 8), + new NamedThreadFactory("LuceneTestCase")); + return new IndexSearcher(r.getTopReaderContext(), ex) { + @Override + public void close() throws IOException { + super.close(); + if (ex != null) { + ex.shutdown(); + try { + ex.awaitTermination(1000, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }; + } + } public String getName() { return this.name; Index: lucene/src/test/org/apache/lucene/document/TestDocument.java =================================================================== --- lucene/src/test/org/apache/lucene/document/TestDocument.java (revision 1065648) +++ lucene/src/test/org/apache/lucene/document/TestDocument.java (working copy) @@ -156,7 +156,7 @@ writer.addDocument(makeDocumentWithFields()); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); // search for something that does exists Query query = new TermQuery(new Term("keyword", "test1")); @@ -238,7 +238,7 @@ writer.addDocument(doc); IndexReader reader = writer.getReader(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); Query query = new TermQuery(new Term("keyword", "test")); Index: lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java =================================================================== --- lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java (revision 1065648) +++ lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/standard/TestQPHelper.java (working copy) @@ -1278,7 +1278,7 @@ doc.add(newField("field", "", Field.Store.NO, Field.Index.ANALYZED)); w.addDocument(doc); IndexReader r = IndexReader.open(w, true); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); Query q = new StandardQueryParser(new CannedAnalyzer()).parse("\"a\"", "field"); assertTrue(q instanceof MultiPhraseQuery); Index: lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestRealTime.java =================================================================== --- lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestRealTime.java (revision 1065648) +++ lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestRealTime.java (working copy) @@ -36,7 +36,7 @@ InstantiatedIndex index = new InstantiatedIndex(); InstantiatedIndexReader reader = new InstantiatedIndexReader(index); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); InstantiatedIndexWriter writer = new InstantiatedIndexWriter(index); Document doc; Index: lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java =================================================================== --- lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java (revision 1065648) +++ lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java (working copy) @@ -37,7 +37,7 @@ InstantiatedIndex ii = new InstantiatedIndex(); IndexReader r = new InstantiatedIndexReader(ii); - IndexSearcher s = new IndexSearcher(r); + IndexSearcher s = newSearcher(r); TopDocs td = s.search(new TermQuery(new Term("foo", "bar")), 1); Index: lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java =================================================================== --- lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java (revision 1065648) +++ lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java (working copy) @@ -73,7 +73,7 @@ d.close(); writer.close(); reader=IndexReader.open(dir, true); - searcher=new IndexSearcher(reader); + searcher=newSearcher(reader); } Index: lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java =================================================================== --- lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java (revision 1065648) +++ lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java (working copy) @@ -70,7 +70,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.add(new Term(FIELD, "fox")); @@ -114,7 +114,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final Query phraseQuery = new SpanNearQuery(new SpanQuery[] { new SpanTermQuery(new Term(FIELD, "fox")), @@ -184,7 +184,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.add(new Term(FIELD, "did")); @@ -227,7 +227,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.add(new Term(FIELD, "did")); @@ -268,7 +268,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final Query phraseQuery = new SpanNearQuery(new SpanQuery[] { new SpanTermQuery(new Term(FIELD, "did")), Index: lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java =================================================================== --- lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java (revision 1065648) +++ lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java (working copy) @@ -113,7 +113,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final DisjunctionMaxQuery query = new DisjunctionMaxQuery(1); query.add(new SpanTermQuery(new Term(FIELD, "{fox}"))); @@ -159,7 +159,7 @@ final IndexReader indexReader = IndexReader.open(directory, true); try { assertEquals(1, indexReader.numDocs()); - final IndexSearcher indexSearcher = new IndexSearcher(indexReader); + final IndexSearcher indexSearcher = newSearcher(indexReader); try { final DisjunctionMaxQuery query = new DisjunctionMaxQuery(1); query.add(new SpanTermQuery(new Term(FIELD, "{fox}"))); Index: lucene/contrib/queries/src/test/org/apache/lucene/search/similar/TestMoreLikeThis.java =================================================================== --- lucene/contrib/queries/src/test/org/apache/lucene/search/similar/TestMoreLikeThis.java (revision 1065648) +++ lucene/contrib/queries/src/test/org/apache/lucene/search/similar/TestMoreLikeThis.java (working copy) @@ -53,7 +53,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/contrib/queries/src/test/org/apache/lucene/search/DuplicateFilterTest.java =================================================================== --- lucene/contrib/queries/src/test/org/apache/lucene/search/DuplicateFilterTest.java (revision 1065648) +++ lucene/contrib/queries/src/test/org/apache/lucene/search/DuplicateFilterTest.java (working copy) @@ -61,7 +61,7 @@ reader = writer.getReader(); writer.close(); - searcher =new IndexSearcher(reader); + searcher =newSearcher(reader); } Index: lucene/contrib/queries/src/test/org/apache/lucene/search/ChainedFilterTest.java =================================================================== --- lucene/contrib/queries/src/test/org/apache/lucene/search/ChainedFilterTest.java (revision 1065648) +++ lucene/contrib/queries/src/test/org/apache/lucene/search/ChainedFilterTest.java (working copy) @@ -72,7 +72,7 @@ reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); // query for everything to make life easier BooleanQuery bq = new BooleanQuery(); @@ -194,7 +194,7 @@ IndexReader reader = writer.getReader(); writer.close(); - IndexSearcher searcher = new IndexSearcher(reader); + IndexSearcher searcher = newSearcher(reader); Query query = new TermQuery(new Term("none", "none")); Index: lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestRegexQuery.java =================================================================== --- lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestRegexQuery.java (revision 1065648) +++ lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestRegexQuery.java (working copy) @@ -51,7 +51,7 @@ writer.addDocument(doc); reader = writer.getReader(); writer.close(); - searcher = new IndexSearcher(reader); + searcher = newSearcher(reader); } @Override Index: lucene/contrib/queries/src/test/org/apache/lucene/search/FuzzyLikeThisQueryTest.java =================================================================== --- lucene/contrib/queries/src/test/org/apache/lucene/search/FuzzyLikeThisQueryTest.java (revision 1065648) +++ lucene/contrib/queries/src/test/org/apache/lucene/search/FuzzyLikeThisQueryTest.java (working copy) @@ -51,7 +51,7 @@ addDoc(writer, "johnathon smythe","6"); reader = writer.getReader(); writer.close(); - searcher=new IndexSearcher(reader); + searcher=newSearcher(reader); } @Override