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 2012/11/19 22:19:01 UTC
svn commit: r1411422 - in /lucene/dev/branches/lucene4547/lucene/core/src:
java/org/apache/lucene/index/CheckIndex.java
test/org/apache/lucene/TestDemoDocValue.java
Author: rmuir
Date: Mon Nov 19 21:19:01 2012
New Revision: 1411422
URL: http://svn.apache.org/viewvc?rev=1411422&view=rev
Log:
more checkindex
Modified:
lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/TestDemoDocValue.java
Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java?rev=1411422&r1=1411421&r2=1411422&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java Mon Nov 19 21:19:01 2012
@@ -1391,6 +1391,29 @@ public class CheckIndex {
}
}
+ private void checkSortedDocValues(FieldInfo fi, SegmentReader reader, SortedDocValues dv) {
+ checkBinaryDocValues(fi, reader, dv);
+ final int maxOrd = dv.getValueCount()-1;
+ int maxOrd2 = -1;
+ for (int i = 0; i < reader.maxDoc(); i++) {
+ maxOrd2 = Math.max(maxOrd2, dv.getOrd(i));
+ }
+ if (maxOrd != maxOrd2) {
+ throw new RuntimeException("dv for field: " + fi.name + " reports wrong maxOrd=" + maxOrd + " but this is not the case: " + maxOrd2);
+ }
+ BytesRef lastValue = null;
+ BytesRef scratch = new BytesRef();
+ for (int i = 0; i <= maxOrd; i++) {
+ dv.lookupOrd(i, scratch);
+ if (lastValue != null) {
+ if (scratch.compareTo(lastValue) <= 0) {
+ throw new RuntimeException("dv for field: " + fi.name + " has ords out of order: " + lastValue + " >=" + scratch);
+ }
+ }
+ lastValue = BytesRef.deepCopyOf(scratch);
+ }
+ }
+
private void checkNumericDocValues(FieldInfo fi, SegmentReader reader, NumericDocValues ndv) {
final long minValue = ndv.minValue();
final long maxValue = ndv.maxValue();
@@ -1416,7 +1439,7 @@ public class CheckIndex {
case BYTES_VAR_SORTED:
case BYTES_FIXED_DEREF:
case BYTES_VAR_DEREF:
- checkBinaryDocValues(fi, reader, reader.getSortedDocValues(fi.name));
+ checkSortedDocValues(fi, reader, reader.getSortedDocValues(fi.name));
break;
case BYTES_FIXED_STRAIGHT:
case BYTES_VAR_STRAIGHT:
Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/TestDemoDocValue.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/TestDemoDocValue.java?rev=1411422&r1=1411421&r2=1411422&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/TestDemoDocValue.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/TestDemoDocValue.java Mon Nov 19 21:19:01 2012
@@ -587,7 +587,12 @@ public class TestDemoDocValue extends Lu
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertTrue(dv.isFixedLength()); // "hello world 1" length == "hello world 2" length
+ assertEquals(2, dv.getValueCount()); // 2 ords
BytesRef scratch = new BytesRef();
+ dv.lookupOrd(0, scratch);
+ assertEquals(new BytesRef("hello world 1"), scratch);
+ dv.lookupOrd(1, scratch);
+ assertEquals(new BytesRef("hello world 2"), scratch);
for(int i=0;i<2;i++) {
StoredDocument doc2 = ireader.leaves().get(0).reader().document(i);
String expected;