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/25 03:12:29 UTC
svn commit: r1206040 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/backwards/src/test/org/apache/lucene/search/
lucene/src/java/org/apache/lucene/search/
lucene/src/test/org/apache/lucene/search/
Author: uschindler
Date: Fri Nov 25 02:12:27 2011
New Revision: 1206040
URL: http://svn.apache.org/viewvc?rev=1206040&view=rev
Log:
Merged revision(s) 1206033 from lucene/dev/trunk:
LUCENE-3595: Fixed FieldCacheRangeFilter and FieldCacheTermsFilter to correctly respect deletions on reopened SegmentReaders. Factored out FieldCacheDocIdSet to be a top-level class
Added:
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java
- copied, changed from r1206033, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java
Modified:
lucene/dev/branches/branch_3x/ (props changed)
lucene/dev/branches/branch_3x/lucene/ (props changed)
lucene/dev/branches/branch_3x/lucene/CHANGES.txt
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheRangeFilter.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheTermsFilter.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldValueFilter.java
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
Modified: lucene/dev/branches/branch_3x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/CHANGES.txt?rev=1206040&r1=1206039&r2=1206040&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/lucene/CHANGES.txt Fri Nov 25 02:12:27 2011
@@ -25,6 +25,12 @@ New Features
have at least one or no value at all in a specific field. (Simon Willnauer,
Uwe Schindler, Robert Muir)
+Bug fixes
+
+* LUCENE-3595: Fixed FieldCacheRangeFilter and FieldCacheTermsFilter
+ to correctly respect deletions on reopened SegmentReaders. Factored out
+ FieldCacheDocIdSet to be a top-level class. (Uwe Schindler, Simon Willnauer)
+
======================= Lucene 3.5.0 =======================
Changes in backwards compatibility policy
Modified: lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java?rev=1206040&r1=1206039&r2=1206040&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java Fri Nov 25 02:12:27 2011
@@ -535,7 +535,6 @@ public class TestFieldCacheRangeFilter e
search.close();
}
- // test using a sparse index (with deleted docs). The DocIdSet should be not cacheable, as it uses TermDocs if the range contains 0
@Test
public void testSparseIndex() throws IOException {
Directory dir = newDirectory();
@@ -561,23 +560,23 @@ public class TestFieldCacheRangeFilter e
Query q = new TermQuery(new Term("body","body"));
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) -20),Byte.valueOf((byte) 20),T,T), 100).scoreDocs;
- assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ //behaviour change: assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 40, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) 0),Byte.valueOf((byte) 20),T,T), 100).scoreDocs;
- assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ //behaviour change: assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 20, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) -20),Byte.valueOf((byte) 0),T,T), 100).scoreDocs;
- assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ //behaviour change: assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 20, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) 10),Byte.valueOf((byte) 20),T,T), 100).scoreDocs;
- assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ //behaviour change: assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 11, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) -20),Byte.valueOf((byte) -10),T,T), 100).scoreDocs;
- assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ //behaviour change: assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 11, result.length);
search.close();
reader.close();
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java (from r1206033, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java&r1=1206033&r2=1206040&rev=1206040&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java Fri Nov 25 02:12:27 2011
@@ -17,9 +17,8 @@ package org.apache.lucene.search;
*/
import java.io.IOException;
-import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.FixedBitSet;
-import org.apache.lucene.util.OpenBitSet;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.TermDocs;
/**
* Base class for DocIdSet to be used with FieldCache. The implementation
@@ -32,12 +31,10 @@ import org.apache.lucene.util.OpenBitSet
*/
public abstract class FieldCacheDocIdSet extends DocIdSet {
- protected final int maxDoc;
- protected final Bits acceptDocs;
-
- public FieldCacheDocIdSet(int maxDoc, Bits acceptDocs) {
- this.maxDoc = maxDoc;
- this.acceptDocs = acceptDocs;
+ protected final IndexReader reader;
+
+ public FieldCacheDocIdSet(IndexReader reader) {
+ this.reader = reader;
}
/**
@@ -45,40 +42,17 @@ public abstract class FieldCacheDocIdSet
*/
protected abstract boolean matchDoc(int doc);
- /**
- * this DocIdSet is always cacheable (does not go back
- * to the reader for iteration)
- */
+ /** this DocIdSet is cacheable, if it works solely with FieldCache and no TermDocs */
@Override
public final boolean isCacheable() {
- return true;
- }
-
- @Override
- public final Bits bits() {
- return (acceptDocs == null) ? new Bits() {
- public boolean get(int docid) {
- return matchDoc(docid);
- }
-
- public int length() {
- return maxDoc;
- }
- } : new Bits() {
- public boolean get(int docid) {
- return acceptDocs.get(docid) && matchDoc(docid);
- }
-
- public int length() {
- return maxDoc;
- }
- };
+ return !reader.hasDeletions();
}
@Override
public final DocIdSetIterator iterator() throws IOException {
- if (acceptDocs == null) {
- // Specialization optimization disregard acceptDocs
+ if (!reader.hasDeletions()) {
+ // Specialization optimization disregard deleted docs
+ final int maxDoc = reader.maxDoc();
return new DocIdSetIterator() {
private int doc = -1;
@@ -108,17 +82,9 @@ public abstract class FieldCacheDocIdSet
return doc = NO_MORE_DOCS;
}
};
- } else if (acceptDocs instanceof FixedBitSet || acceptDocs instanceof OpenBitSet) {
- // special case for FixedBitSet / OpenBitSet: use the iterator and filter it
- // (used e.g. when Filters are chained by FilteredQuery)
- return new FilteredDocIdSetIterator(((DocIdSet) acceptDocs).iterator()) {
- @Override
- protected boolean match(int doc) {
- return FieldCacheDocIdSet.this.matchDoc(doc);
- }
- };
} else {
// Stupid consultation of acceptDocs and matchDoc()
+ final TermDocs termDocs = reader.termDocs(null);
return new DocIdSetIterator() {
private int doc = -1;
@@ -128,24 +94,23 @@ public abstract class FieldCacheDocIdSet
}
@Override
- public int nextDoc() {
+ public int nextDoc() throws IOException {
do {
- doc++;
- if (doc >= maxDoc) {
+ if (!termDocs.next())
return doc = NO_MORE_DOCS;
- }
- } while (!acceptDocs.get(doc) || !matchDoc(doc));
+ } while (!matchDoc(doc = termDocs.doc()));
return doc;
}
@Override
- public int advance(int target) {
- for(doc=target; doc<maxDoc; doc++) {
- if (acceptDocs.get(doc) && matchDoc(doc)) {
- return doc;
- }
+ public int advance(int target) throws IOException {
+ if (!termDocs.skipTo(target))
+ return doc = NO_MORE_DOCS;
+ while (!matchDoc(doc = termDocs.doc())) {
+ if (!termDocs.next())
+ return doc = NO_MORE_DOCS;
}
- return doc = NO_MORE_DOCS;
+ return doc;
}
};
}
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheRangeFilter.java?rev=1206040&r1=1206039&r2=1206040&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheRangeFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheRangeFilter.java Fri Nov 25 02:12:27 2011
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
import java.io.IOException;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.TermDocs;
import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.document.NumericField; // for javadocs
@@ -119,11 +118,9 @@ public abstract class FieldCacheRangeFil
assert inclusiveLowerPoint > 0 && inclusiveUpperPoint > 0;
- // for this DocIdSet, we never need to use TermDocs,
- // because deleted docs have an order of 0 (null entry in StringIndex)
- return new FieldCacheDocIdSet(reader, false) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- final boolean matchDoc(int doc) {
+ protected final boolean matchDoc(int doc) {
return fcsi.order[doc] >= inclusiveLowerPoint && fcsi.order[doc] <= inclusiveUpperPoint;
}
};
@@ -171,10 +168,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final byte[] values = FieldCache.DEFAULT.getBytes(reader, field, (FieldCache.ByteParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0 && inclusiveUpperPoint >= 0)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -222,10 +218,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final short[] values = FieldCache.DEFAULT.getShorts(reader, field, (FieldCache.ShortParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0 && inclusiveUpperPoint >= 0)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -273,10 +268,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final int[] values = FieldCache.DEFAULT.getInts(reader, field, (FieldCache.IntParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0 && inclusiveUpperPoint >= 0)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -324,10 +318,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final long[] values = FieldCache.DEFAULT.getLongs(reader, field, (FieldCache.LongParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0L && inclusiveUpperPoint >= 0L)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -379,10 +372,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final float[] values = FieldCache.DEFAULT.getFloats(reader, field, (FieldCache.FloatParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0.0f && inclusiveUpperPoint >= 0.0f)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -434,10 +426,9 @@ public abstract class FieldCacheRangeFil
return DocIdSet.EMPTY_DOCIDSET;
final double[] values = FieldCache.DEFAULT.getDoubles(reader, field, (FieldCache.DoubleParser) parser);
- // we only request the usage of termDocs, if the range contains 0
- return new FieldCacheDocIdSet(reader, (inclusiveLowerPoint <= 0.0 && inclusiveUpperPoint >= 0.0)) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected boolean matchDoc(int doc) {
return values[doc] >= inclusiveLowerPoint && values[doc] <= inclusiveUpperPoint;
}
};
@@ -500,103 +491,5 @@ public abstract class FieldCacheRangeFil
/** Returns the current numeric parser ({@code null} for {@code T} is {@code String}} */
public FieldCache.Parser getParser() { return parser; }
-
- static abstract class FieldCacheDocIdSet extends DocIdSet {
- private final IndexReader reader;
- private boolean mayUseTermDocs;
-
- FieldCacheDocIdSet(IndexReader reader, boolean mayUseTermDocs) {
- this.reader = reader;
- this.mayUseTermDocs = mayUseTermDocs;
- }
-
- /** this method checks, if a doc is a hit, should throw AIOBE, when position invalid */
- abstract boolean matchDoc(int doc) throws ArrayIndexOutOfBoundsException;
-
- /** this DocIdSet is cacheable, if it works solely with FieldCache and no TermDocs */
- @Override
- public boolean isCacheable() {
- return !(mayUseTermDocs && reader.hasDeletions());
- }
-
- @Override
- public DocIdSetIterator iterator() throws IOException {
- // Synchronization needed because deleted docs BitVector
- // can change after call to hasDeletions until TermDocs creation.
- // We only use an iterator with termDocs, when this was requested (e.g. range contains 0)
- // and the index has deletions
- final TermDocs termDocs;
- synchronized(reader) {
- termDocs = isCacheable() ? null : reader.termDocs(null);
- }
- if (termDocs != null) {
- // a DocIdSetIterator using TermDocs to iterate valid docIds
- return new DocIdSetIterator() {
- private int doc = -1;
-
- @Override
- public int docID() {
- return doc;
- }
-
- @Override
- public int nextDoc() throws IOException {
- do {
- if (!termDocs.next())
- return doc = NO_MORE_DOCS;
- } while (!matchDoc(doc = termDocs.doc()));
- return doc;
- }
-
- @Override
- public int advance(int target) throws IOException {
- if (!termDocs.skipTo(target))
- return doc = NO_MORE_DOCS;
- while (!matchDoc(doc = termDocs.doc())) {
- if (!termDocs.next())
- return doc = NO_MORE_DOCS;
- }
- return doc;
- }
- };
- } else {
- // a DocIdSetIterator generating docIds by incrementing a variable -
- // this one can be used if there are no deletions are on the index
- return new DocIdSetIterator() {
- private int doc = -1;
-
- @Override
- public int docID() {
- return doc;
- }
-
- @Override
- public int nextDoc() {
- try {
- do {
- doc++;
- } while (!matchDoc(doc));
- return doc;
- } catch (ArrayIndexOutOfBoundsException e) {
- return doc = NO_MORE_DOCS;
- }
- }
-
- @Override
- public int advance(int target) {
- try {
- doc = target;
- while (!matchDoc(doc)) {
- doc++;
- }
- return doc;
- } catch (ArrayIndexOutOfBoundsException e) {
- return doc = NO_MORE_DOCS;
- }
- }
- };
- }
- }
- }
}
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=1206040&r1=1206039&r2=1206040&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 Fri Nov 25 02:12:27 2011
@@ -116,9 +116,9 @@ public class FieldCacheTermsFilter exten
bits.set(termNumber);
}
}
- return new FieldCacheRangeFilter.FieldCacheDocIdSet(reader, true) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- boolean matchDoc(int doc) {
+ protected final boolean matchDoc(int doc) {
return bits.get(fcsi.order[doc]);
}
};
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldValueFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldValueFilter.java?rev=1206040&r1=1206039&r2=1206040&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldValueFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldValueFilter.java Fri Nov 25 02:12:27 2011
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
import java.io.IOException;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.FieldCacheRangeFilter.FieldCacheDocIdSet;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.Bits.MatchAllBits;
import org.apache.lucene.util.Bits.MatchNoBits;
@@ -59,21 +58,16 @@ public class FieldValueFilter extends Fi
}
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
+ public DocIdSet getDocIdSet(final IndexReader reader) throws IOException {
final Bits docsWithField = FieldCache.DEFAULT.getDocsWithField(
reader, field);
if (negate) {
if (docsWithField instanceof MatchAllBits) {
return null;
}
- final int maxDoc = reader.maxDoc();
- return new FieldCacheDocIdSet(reader, true) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- final boolean matchDoc(int doc) {
- if (doc >= maxDoc) {
- // TODO: this makes no sense we should check this on the caller level
- throw new ArrayIndexOutOfBoundsException("doc: "+doc + " maxDoc: " + maxDoc);
- }
+ protected final boolean matchDoc(int doc) {
return !docsWithField.get(doc);
}
};
@@ -84,20 +78,18 @@ public class FieldValueFilter extends Fi
if (docsWithField instanceof DocIdSet) {
// UweSays: this is always the case for our current impl - but who knows
// :-)
- /*
- * TODO this could deliver delete docs but FCDID seems broken too if
- * this filter is not used with another query
- */
- return (DocIdSet) docsWithField;
+ final DocIdSet dis = (DocIdSet) docsWithField;
+ return (reader.hasDeletions()) ?
+ new FilteredDocIdSet(dis) {
+ @Override
+ protected final boolean match(int doc) {
+ return !reader.isDeleted(doc);
+ }
+ } : dis;
}
- final int maxDoc = reader.maxDoc();
- return new FieldCacheDocIdSet(reader, true) {
+ return new FieldCacheDocIdSet(reader) {
@Override
- final boolean matchDoc(int doc) {
- if (doc >= maxDoc) {
- // TODO: this makes no sense we should check this on the caller level
- throw new ArrayIndexOutOfBoundsException("doc: "+doc + " maxDoc: " + maxDoc);
- }
+ protected final boolean matchDoc(int doc) {
return docsWithField.get(doc);
}
};
@@ -134,7 +126,7 @@ public class FieldValueFilter extends Fi
@Override
public String toString() {
- return "NoFieldValueFilter [field=" + field + ", negate=" + negate + "]";
+ return "FieldValueFilter [field=" + field + ", negate=" + negate + "]";
}
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java?rev=1206040&r1=1206039&r2=1206040&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java Fri Nov 25 02:12:27 2011
@@ -535,7 +535,6 @@ public class TestFieldCacheRangeFilter e
search.close();
}
- // test using a sparse index (with deleted docs). The DocIdSet should be not cacheable, as it uses TermDocs if the range contains 0
@Test
public void testSparseIndex() throws IOException {
Directory dir = newDirectory();
@@ -573,11 +572,11 @@ public class TestFieldCacheRangeFilter e
assertEquals("find all", 20, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) 10),Byte.valueOf((byte) 20),T,T), 100).scoreDocs;
- assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 11, result.length);
result = search.search(q,fcrf=FieldCacheRangeFilter.newByteRange("id",Byte.valueOf((byte) -20),Byte.valueOf((byte) -10),T,T), 100).scoreDocs;
- assertTrue("DocIdSet must be cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
+ assertFalse("DocIdSet must be not cacheable", fcrf.getDocIdSet(reader.getSequentialSubReaders()[0]).isCacheable());
assertEquals("find all", 11, result.length);
search.close();
reader.close();