You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2011/11/24 23:55:41 UTC

svn commit: r1206011 - /lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java

Author: uschindler
Date: Thu Nov 24 22:55:40 2011
New Revision: 1206011

URL: http://svn.apache.org/viewvc?rev=1206011&view=rev
Log:
LUCENE-3594: Backport FieldCacheTermsFilter code duplication removal to 3.x

Modified:
    lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java

Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java?rev=1206011&r1=1206010&r2=1206011&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java Thu Nov 24 22:55:40 2011
@@ -108,66 +108,19 @@ public class FieldCacheTermsFilter exten
 
   @Override
   public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
-    return new FieldCacheTermsFilterDocIdSet(getFieldCache().getStringIndex(reader, field));
-  }
-
-  protected class FieldCacheTermsFilterDocIdSet extends DocIdSet {
-    private FieldCache.StringIndex fcsi;
-
-    private FixedBitSet bits;
-
-    public FieldCacheTermsFilterDocIdSet(FieldCache.StringIndex fcsi) {
-      this.fcsi = fcsi;
-      bits = new FixedBitSet(this.fcsi.lookup.length);
-      for (int i=0;i<terms.length;i++) {
-        int termNumber = this.fcsi.binarySearchLookup(terms[i]);
-        if (termNumber > 0) {
-          bits.set(termNumber);
-        }
+    final FieldCache.StringIndex fcsi = getFieldCache().getStringIndex(reader, field);
+    final FixedBitSet bits = new FixedBitSet(fcsi.lookup.length);
+    for (int i=0;i<terms.length;i++) {
+      int termNumber = fcsi.binarySearchLookup(terms[i]);
+      if (termNumber > 0) {
+        bits.set(termNumber);
       }
     }
-
-    @Override
-    public DocIdSetIterator iterator() {
-      return new FieldCacheTermsFilterDocIdSetIterator();
-    }
-
-    /** This DocIdSet implementation is cacheable. */
-    @Override
-    public boolean isCacheable() {
-      return true;
-    }
-
-    protected class FieldCacheTermsFilterDocIdSetIterator extends DocIdSetIterator {
-      private int doc = -1;
-
-      @Override
-      public int docID() {
-        return doc;
-      }
-
+    return new FieldCacheRangeFilter.FieldCacheDocIdSet(reader, true) {
       @Override
-      public int nextDoc() {
-        try {
-          while (!bits.get(fcsi.order[++doc])) {}
-        } catch (ArrayIndexOutOfBoundsException e) {
-          doc = NO_MORE_DOCS;
-        }
-        return doc;
+      boolean matchDoc(int doc) {
+        return bits.get(fcsi.order[doc]);
       }
-
-      @Override
-      public int advance(int target) {
-        try {
-          doc = target;
-          while (!bits.get(fcsi.order[doc])) {
-            doc++;
-          }
-        } catch (ArrayIndexOutOfBoundsException e) {
-          doc = NO_MORE_DOCS;
-        }
-        return doc;
-      }
-    }
+    };
   }
 }