mirror of https://github.com/apache/lucene.git
LUCENE-5691: DocTermOrds lookupTerm is wrong in some cases
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1596370 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
86e7b08381
commit
a67d9a89a0
|
@ -196,6 +196,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
|
||||
|
|
|
@ -894,10 +894,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);
|
||||
|
|
|
@ -579,6 +579,16 @@ public class TestDocTermOrds extends LuceneTestCase {
|
|||
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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue