dweiss commented on a change in pull request #1908:
URL: https://github.com/apache/lucene-solr/pull/1908#discussion_r492648887
##########
File path:
lucene/core/src/java/org/apache/lucene/index/SortedSetDocValuesWriter.java
##########
@@ -379,4 +352,31 @@ public long getValueCount() {
return in.getValueCount();
}
}
+
+ static final class DocOrds {
+ final long[] offsets;
+ final PackedLongValues ords;
+
+ DocOrds(int maxDoc, Sorter.DocMap sortMap, SortedSetDocValues oldValues,
float acceptableOverheadRatio) throws IOException {
+ offsets = new long[maxDoc];
+ PackedLongValues.Builder builder =
PackedLongValues.packedBuilder(acceptableOverheadRatio);
+ long ordOffset = 1; // 0 marks docs with no values
+ int docID;
+ while ((docID = oldValues.nextDoc()) != NO_MORE_DOCS) {
+ int newDocID = sortMap.oldToNew(docID);
+ long startOffset = ordOffset;
+ long ord;
+ while ((ord = oldValues.nextOrd()) != NO_MORE_ORDS) {
+ builder.add(ord + 1);
+ ordOffset++;
+ }
+ if (startOffset != ordOffset) { // do we have any values?
+ offsets[newDocID] = startOffset;
+ builder.add(0); // 0 ord marks next value
Review comment:
Technically you could also have a sign switch as boundary (~value marks
first value) but I don't think it'd result in any savings and would only
complicate the value stream.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]