You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2018/12/03 13:32:05 UTC
[4/4] lucene-solr:master: LUCENE-8374 part 4/4: Reduce reads for
sparse DocValues
LUCENE-8374 part 4/4: Reduce reads for sparse DocValues
Offset and index jump-table for norm blocks.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e356d793
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e356d793
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e356d793
Branch: refs/heads/master
Commit: e356d793caf2a899f23261baba922d4a08b362ed
Parents: 7949b98
Author: Toke Eskildsen <to...@apache.org>
Authored: Mon Dec 3 14:30:30 2018 +0100
Committer: Toke Eskildsen <to...@apache.org>
Committed: Mon Dec 3 14:30:30 2018 +0100
----------------------------------------------------------------------
.../apache/lucene/codecs/lucene70/Lucene70NormsProducer.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e356d793/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70NormsProducer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70NormsProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70NormsProducer.java
index c7310e8..321fcff 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70NormsProducer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70NormsProducer.java
@@ -45,6 +45,7 @@ final class Lucene70NormsProducer extends NormsProducer implements Cloneable {
private final Map<Integer,NormsEntry> norms = new HashMap<>();
private final int maxDoc;
private IndexInput data;
+ private final IndexedDISICacheFactory disiCacheFactory = new IndexedDISICacheFactory();
private boolean merging;
private Map<Integer, IndexInput> disiInputs;
private Map<Integer, RandomAccessInput> dataInputs;
@@ -293,7 +294,9 @@ final class Lucene70NormsProducer extends NormsProducer implements Cloneable {
} else {
// sparse
final IndexInput disiInput = getDisiInput(field, entry);
- final IndexedDISI disi = new IndexedDISI(disiInput, entry.numDocsWithField);
+ final IndexedDISI disi = disiCacheFactory.createCachedIndexedDISI(
+ disiInput, entry.docsWithFieldOffset + entry.docsWithFieldLength, entry.numDocsWithField, field.name);
+
if (entry.bytesPerNorm == 0) {
return new SparseNormsIterator(disi) {
@Override
@@ -342,11 +345,12 @@ final class Lucene70NormsProducer extends NormsProducer implements Cloneable {
@Override
public void close() throws IOException {
data.close();
+ disiCacheFactory.releaseAll();
}
@Override
public long ramBytesUsed() {
- return 64L * norms.size(); // good enough
+ return 64L * norms.size() + disiCacheFactory.ramBytesUsed(); // good enough
}
@Override