From c62fb270d6533e47615c5878e8f4d0d931579242 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Wed, 18 Nov 2009 23:01:05 +0000 Subject: [PATCH] remove unneeded TermGenerator in MTQWF (no longer Filter.bits()). This is a small speed improvement. I will apply this to 3.0, too, if a new RC comes. git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@881984 13f79535-47bb-0310-9956-ffa450edef68 --- .../search/MultiTermQueryWrapperFilter.java | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java b/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java index 639fbaf0dbd..bbf80f5df4c 100644 --- a/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java +++ b/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java @@ -93,9 +93,20 @@ public class MultiTermQueryWrapperFilter extends Filte public void clearTotalNumberOfTerms() { query.clearTotalNumberOfTerms(); } - - abstract class TermGenerator { - public void generate(IndexReader reader, TermEnum enumerator) throws IOException { + + /** + * Returns a DocIdSet with documents that should be + * permitted in search results. + */ + @Override + public DocIdSet getDocIdSet(IndexReader reader) throws IOException { + final TermEnum enumerator = query.getEnum(reader); + try { + // if current term in enum is null, the enum is empty -> shortcut + if (enumerator.term() == null) + return DocIdSet.EMPTY_DOCIDSET; + // else fill into a OpenBitSet + final OpenBitSet bitSet = new OpenBitSet(reader.maxDoc()); final int[] docs = new int[32]; final int[] freqs = new int[32]; TermDocs termDocs = reader.termDocs(); @@ -111,7 +122,7 @@ public class MultiTermQueryWrapperFilter extends Filte final int count = termDocs.read(docs, freqs); if (count != 0) { for(int i=0;i extends Filte } finally { termDocs.close(); } - } - abstract public void handleDoc(int doc); - } - - /** - * Returns a DocIdSet with documents that should be - * permitted in search results. - */ - @Override - public DocIdSet getDocIdSet(IndexReader reader) throws IOException { - final TermEnum enumerator = query.getEnum(reader); - try { - // if current term in enum is null, the enum is empty -> shortcut - if (enumerator.term() == null) - return DocIdSet.EMPTY_DOCIDSET; - // else fill into a OpenBitSet - final OpenBitSet bitSet = new OpenBitSet(reader.maxDoc()); - new TermGenerator() { - @Override - public void handleDoc(int doc) { - bitSet.set(doc); - } - }.generate(reader, enumerator); return bitSet; } finally { enumerator.close();