status.totalSortedFields++; checkDVIterator(fi, maxDoc, dvReader::getSorted); checkBinaryDocValues(fi.name, maxDoc, dvReader.getSorted(fi)); checkSortedDocValues(fi.name, maxDoc, dvReader.getSorted(fi)); break; case SORTED_NUMERIC: status.totalSortedNumericFields++; checkDVIterator(fi, maxDoc, dvReader::getSortedNumeric); checkSortedNumericDocValues(fi.name, maxDoc, dvReader.getSortedNumeric(fi)); break; case SORTED_SET: status.totalSortedSetFields++; checkDVIterator(fi, maxDoc, dvReader::getSortedSet); checkSortedSetDocValues(fi.name, maxDoc, dvReader.getSortedSet(fi)); break; case BINARY: status.totalBinaryFields++; checkDVIterator(fi, maxDoc, dvReader::getBinary); checkBinaryDocValues(fi.name, maxDoc, dvReader.getBinary(fi)); break; case NUMERIC: status.totalNumericFields++; checkDVIterator(fi, maxDoc, dvReader::getNumeric); checkNumericDocValues(fi.name, dvReader.getNumeric(fi)); break; default:
@Override public void checkIntegrity() throws IOException { for (DocValuesProducer producer : dvProducers) { producer.checkIntegrity(); } }
@SuppressWarnings("synthetic-access") @Override protected void release() throws IOException { object.close(); synchronized (SegmentDocValues.this) { genDVProducers.remove(gen); } } };
@Override public SortedDocValues getSorted(FieldInfo field) throws IOException { DocValuesProducer dvProducer = dvProducersByField.get(field.name); assert dvProducer != null; return dvProducer.getSorted(field); }
@Override public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException { DocValuesProducer dvProducer = dvProducersByField.get(field.name); assert dvProducer != null; return dvProducer.getSortedSet(field); }
@Override public NumericDocValues getNumeric(FieldInfo field) throws IOException { DocValuesProducer producer = fields.get(field.name); return producer == null ? null : producer.getNumeric(field); }
@Override public BinaryDocValues getBinary(FieldInfo field) throws IOException { DocValuesProducer dvProducer = dvProducersByField.get(field.name); assert dvProducer != null; return dvProducer.getBinary(field); }
@Override public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException { DocValuesProducer dvProducer = dvProducersByField.get(field.name); assert dvProducer != null; return dvProducer.getSortedNumeric(field); }
@Override public long ramBytesUsed() { long ramBytesUsed = BASE_RAM_BYTES_USED; ramBytesUsed += dvGens.size() * LONG_RAM_BYTES_USED; ramBytesUsed += dvProducers.size() * RamUsageEstimator.NUM_BYTES_OBJECT_REF; ramBytesUsed += dvProducersByField.size() * 2 * RamUsageEstimator.NUM_BYTES_OBJECT_REF; for (DocValuesProducer producer : dvProducers) { ramBytesUsed += producer.ramBytesUsed(); } return ramBytesUsed; }
FieldsReader(FieldsReader other) throws IOException { Map<DocValuesProducer,DocValuesProducer> oldToNew = new IdentityHashMap<>(); // First clone all formats for(Map.Entry<String,DocValuesProducer> ent : other.formats.entrySet()) { DocValuesProducer values = ent.getValue().getMergeInstance(); formats.put(ent.getKey(), values); oldToNew.put(ent.getValue(), values); } // Then rebuild fields: for(Map.Entry<String,DocValuesProducer> ent : other.fields.entrySet()) { DocValuesProducer producer = oldToNew.get(ent.getValue()); assert producer != null; fields.put(ent.getKey(), producer); } }
@Override public SortedDocValues getSorted(FieldInfo field) throws IOException { DocValuesProducer producer = fields.get(field.name); return producer == null ? null : producer.getSorted(field); }
@Override public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException { DocValuesProducer producer = fields.get(field.name); return producer == null ? null : producer.getSortedSet(field); }
@Override public NumericDocValues getNumeric(FieldInfo field) throws IOException { DocValuesProducer dvProducer = dvProducersByField.get(field.name); assert dvProducer != null; return dvProducer.getNumeric(field); }
@Override public BinaryDocValues getBinary(FieldInfo field) throws IOException { DocValuesProducer producer = fields.get(field.name); return producer == null ? null : producer.getBinary(field); }
@Override public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException { DocValuesProducer producer = fields.get(field.name); return producer == null ? null : producer.getSortedNumeric(field); }
@Override public long ramBytesUsed() { long size = 0; for (Map.Entry<String,DocValuesProducer> entry : formats.entrySet()) { size += (entry.getKey().length() * Character.BYTES) + entry.getValue().ramBytesUsed(); } return size; }
dvReader = dvReader.getMergeInstance();
values = valuesProducer.getSorted(fieldInfo); } catch (IOException ioe) { throw new RuntimeException(ioe);
@Override public SortedDocValues getSorted(FieldInfo field) throws IOException { return SortedSetSelector.wrap(valuesProducer.getSortedSet(field), SortedSetSelector.Type.MIN); } });
@Override public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException { return DocValues.singleton(valuesProducer.getNumeric(field)); } });