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;
- }
- }
+ };
}
}