You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/12/01 19:01:54 UTC
svn commit: r1642725 - in /lucene/dev/branches/lucene2878/lucene:
codecs/src/java/org/apache/lucene/codecs/memory/
core/src/test/org/apache/lucene/search/posfilter/
test-framework/src/java/org/apache/lucene/util/
Author: romseygeek
Date: Mon Dec 1 18:01:54 2014
New Revision: 1642725
URL: http://svn.apache.org/r1642725
Log:
Fix DirectPostingsFormat pos exhaustion
Modified:
lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java
lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java
lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
Modified: lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java (original)
+++ lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java Mon Dec 1 18:01:54 2014
@@ -1953,7 +1953,8 @@ public final class DirectPostingsFormat
@Override
public int nextPosition() {
- assert skipPositions > 0;
+ if (skipPositions <= 0)
+ return NO_MORE_POSITIONS;
skipPositions--;
pos = postings[upto++];
if (hasOffsets) {
@@ -2301,6 +2302,8 @@ public final class DirectPostingsFormat
@Override
public int nextPosition() {
posUpto += posJump;
+ if (posUpto >= curPositions.length)
+ return NO_MORE_POSITIONS;
return curPositions[posUpto];
}
Modified: lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java (original)
+++ lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java Mon Dec 1 18:01:54 2014
@@ -17,16 +17,14 @@ package org.apache.lucene.search.posfilt
* limitations under the License.
*/
+import java.io.IOException;
+
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.RegexpQuery;
import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.search.posfilter.OrderedNearQuery;
-import org.junit.Assert;
-
-import java.io.IOException;
public class TestIntervalScoring extends IntervalTestBase {
Modified: lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Mon Dec 1 18:01:54 2014
@@ -92,7 +92,10 @@ import org.apache.lucene.index.*;
import org.apache.lucene.index.IndexReader.ReaderClosedListener;
import org.apache.lucene.index.TermsEnum.SeekStatus;
import org.apache.lucene.search.AssertingIndexSearcher;
+import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.FilterCachingPolicy;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.QueryUtils.FCInvisibleMultiReader;
import org.apache.lucene.store.BaseDirectoryWrapper;
@@ -421,6 +424,19 @@ public abstract class LuceneTestCase ext
static {
CORE_DIRECTORIES = new ArrayList<>(FS_DIRECTORIES);
CORE_DIRECTORIES.add("RAMDirectory");
+ }
+
+ /** A {@link org.apache.lucene.search.FilterCachingPolicy} that randomly caches. */
+ public static final FilterCachingPolicy MAYBE_CACHE_POLICY = new FilterCachingPolicy() {
+
+ @Override
+ public void onCache(Filter filter) {}
+
+ @Override
+ public boolean shouldCache(Filter filter, LeafReaderContext context, DocIdSet set) throws IOException {
+ return random().nextBoolean();
+ }
+
};
// -----------------------------------------------------------------