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 2013/07/19 15:23:22 UTC
svn commit: r1504868 - in /lucene/dev/trunk/lucene: CHANGES.txt
codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java
codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java
Author: rmuir
Date: Fri Jul 19 13:23:22 2013
New Revision: 1504868
URL: http://svn.apache.org/r1504868
Log:
LUCENE-5119: DiskDV SortedDocValues shouldnt hold doc-to-ord in heap
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java
lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1504868&r1=1504867&r2=1504868&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Fri Jul 19 13:23:22 2013
@@ -82,6 +82,9 @@ Optimizations
* LUCENE-5088: Added TermFilter to filter docs by a specific term.
(Martijn van Groningen)
+* LUCENE-5119: DiskDV keeps the document-to-ordinal mapping on disk for
+ SortedDocValues. (Robert Muir)
+
Bug fixes
* LUCENE-4734: Add FastVectorHighlighter support for proximity queries and
Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java?rev=1504868&r1=1504867&r2=1504868&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesFormat.java Fri Jul 19 13:23:22 2013
@@ -28,8 +28,7 @@ import org.apache.lucene.index.SegmentWr
/**
* DocValues format that keeps most things on disk.
* <p>
- * Things like ordinals and disk offsets are loaded into ram,
- * for single-seek access to all the types.
+ * Only things like disk offsets are loaded into ram.
* <p>
* @lucene.experimental
*/
Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java?rev=1504868&r1=1504867&r2=1504868&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/DiskDocValuesProducer.java Fri Jul 19 13:23:22 2013
@@ -51,7 +51,6 @@ class DiskDocValuesProducer extends DocV
private final IndexInput data;
// memory-resident structures
- private final Map<Integer,BlockPackedReader> ordinalInstances = new HashMap<Integer,BlockPackedReader>();
private final Map<Integer,MonotonicBlockPackedReader> addressInstances = new HashMap<Integer,MonotonicBlockPackedReader>();
private final Map<Integer,MonotonicBlockPackedReader> ordIndexInstances = new HashMap<Integer,MonotonicBlockPackedReader>();
@@ -326,18 +325,11 @@ class DiskDocValuesProducer extends DocV
public SortedDocValues getSorted(FieldInfo field) throws IOException {
final int valueCount = (int) binaries.get(field.number).count;
final BinaryDocValues binary = getBinary(field);
- final BlockPackedReader ordinals;
- synchronized (ordinalInstances) {
- BlockPackedReader ordsInstance = ordinalInstances.get(field.number);
- if (ordsInstance == null) {
- NumericEntry entry = ords.get(field.number);
- IndexInput data = this.data.clone();
- data.seek(entry.offset);
- ordsInstance = new BlockPackedReader(data, entry.packedIntsVersion, entry.blockSize, entry.count, false);
- ordinalInstances.put(field.number, ordsInstance);
- }
- ordinals = ordsInstance;
- }
+ NumericEntry entry = ords.get(field.number);
+ IndexInput data = this.data.clone();
+ data.seek(entry.offset);
+ final BlockPackedReader ordinals = new BlockPackedReader(data, entry.packedIntsVersion, entry.blockSize, entry.count, true);
+
return new SortedDocValues() {
@Override