You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/05/20 21:22:27 UTC
svn commit: r1596371 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/CHANGES.txt
lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java
lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java
lucene/misc/
Author: rmuir
Date: Tue May 20 19:22:27 2014
New Revision: 1596371
URL: http://svn.apache.org/r1596371
Log:
LUCENE-5691: DocTermOrds lookupTerm is wrong in some cases
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java
lucene/dev/branches/branch_4x/lucene/misc/ (props changed)
Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1596371&r1=1596370&r2=1596371&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Tue May 20 19:22:27 2014
@@ -103,6 +103,10 @@ Bug fixes
* LUCENE-5682: NPE in QueryRescorer when Scorer is null
(Joel Bernstein, Mike McCandless)
+* LUCENE-5691: DocTermOrds lookupTerm(BytesRef) would return incorrect results
+ if the underlying TermsEnum supports ord() and the insertion point would
+ be at the end. (Robert Muir)
+
Test Framework
* LUCENE-5622: Fail tests if they print over the given limit of bytes to
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java?rev=1596371&r1=1596370&r2=1596371&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java Tue May 20 19:22:27 2014
@@ -889,10 +889,15 @@ public class DocTermOrds {
@Override
public long lookupTerm(BytesRef key) {
try {
- if (te.seekCeil(key) == SeekStatus.FOUND) {
- return te.ord();
- } else {
- return -te.ord()-1;
+ switch (te.seekCeil(key)) {
+ case FOUND:
+ assert te.ord() >= 0;
+ return te.ord();
+ case NOT_FOUND:
+ assert te.ord() >= 0;
+ return -te.ord()-1;
+ default: /* END */
+ return -numTerms()-1;
}
} catch (IOException e) {
throw new RuntimeException(e);
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java?rev=1596371&r1=1596370&r2=1596371&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java Tue May 20 19:22:27 2014
@@ -475,6 +475,16 @@ public class TestDocTermOrds extends Luc
termsEnum.seekExact(2);
assertEquals("world", termsEnum.term().utf8ToString());
assertEquals(2, termsEnum.ord());
+
+ // lookupTerm(BytesRef)
+ assertEquals(-1, dv.lookupTerm(new BytesRef("apple")));
+ assertEquals(0, dv.lookupTerm(new BytesRef("beer")));
+ assertEquals(-2, dv.lookupTerm(new BytesRef("car")));
+ assertEquals(1, dv.lookupTerm(new BytesRef("hello")));
+ assertEquals(-3, dv.lookupTerm(new BytesRef("matter")));
+ assertEquals(2, dv.lookupTerm(new BytesRef("world")));
+ assertEquals(-4, dv.lookupTerm(new BytesRef("zany")));
+
ireader.close();
directory.close();
}