Java Code Examples for org.apache.lucene.index.FieldInfo#hasNorms()
The following examples show how to use
org.apache.lucene.index.FieldInfo#hasNorms() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Lucene80NormsProducer.java From lucene-solr with Apache License 2.0 | 6 votes |
private void readFields(IndexInput meta, FieldInfos infos) throws IOException { for (int fieldNumber = meta.readInt(); fieldNumber != -1; fieldNumber = meta.readInt()) { FieldInfo info = infos.fieldInfo(fieldNumber); if (info == null) { throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta); } else if (!info.hasNorms()) { throw new CorruptIndexException("Invalid field: " + info.name, meta); } NormsEntry entry = new NormsEntry(); entry.docsWithFieldOffset = meta.readLong(); entry.docsWithFieldLength = meta.readLong(); entry.jumpTableEntryCount = meta.readShort(); entry.denseRankPower = meta.readByte(); entry.numDocsWithField = meta.readInt(); entry.bytesPerNorm = meta.readByte(); switch (entry.bytesPerNorm) { case 0: case 1: case 2: case 4: case 8: break; default: throw new CorruptIndexException("Invalid bytesPerValue: " + entry.bytesPerNorm + ", field: " + info.name, meta); } entry.normsOffset = meta.readLong(); norms.put(info.number, entry); } }
Example 2
Source File: DocumentField.java From lucene-solr with Apache License 2.0 | 5 votes |
static DocumentField of(FieldInfo finfo, IndexableField field, IndexReader reader, int docId) throws IOException { Objects.requireNonNull(finfo); Objects.requireNonNull(reader); DocumentField dfield = new DocumentField(); dfield.name = finfo.name; dfield.idxOptions = finfo.getIndexOptions(); dfield.hasTermVectors = finfo.hasVectors(); dfield.hasPayloads = finfo.hasPayloads(); dfield.hasNorms = finfo.hasNorms(); if (finfo.hasNorms()) { NumericDocValues norms = MultiDocValues.getNormValues(reader, finfo.name); if (norms.advanceExact(docId)) { dfield.norm = norms.longValue(); } } dfield.dvType = finfo.getDocValuesType(); dfield.pointDimensionCount = finfo.getPointDimensionCount(); dfield.pointNumBytes = finfo.getPointNumBytes(); if (field != null) { dfield.isStored = field.fieldType().stored(); dfield.stringValue = field.stringValue(); if (field.binaryValue() != null) { dfield.binaryValue = BytesRef.deepCopyOf(field.binaryValue()); } dfield.numericValue = field.numericValue(); } return dfield; }
Example 3
Source File: NormsConsumer.java From lucene-solr with Apache License 2.0 | 5 votes |
/** Merges in the fields from the readers in * <code>mergeState</code>. The default implementation * calls {@link #mergeNormsField} for each field, * filling segments with missing norms for the field with zeros. * Implementations can override this method * for more sophisticated merging (bulk-byte copying, etc). */ public void merge(MergeState mergeState) throws IOException { for(NormsProducer normsProducer : mergeState.normsProducers) { if (normsProducer != null) { normsProducer.checkIntegrity(); } } for (FieldInfo mergeFieldInfo : mergeState.mergeFieldInfos) { if (mergeFieldInfo.hasNorms()) { mergeNormsField(mergeFieldInfo, mergeState); } } }
Example 4
Source File: PerFieldMergeState.java From lucene-solr with Apache License 2.0 | 5 votes |
FilterFieldInfos(FieldInfos src, Collection<String> filterFields) { // Copy all the input FieldInfo objects since the field numbering must be kept consistent super(toArray(src)); boolean hasVectors = false; boolean hasProx = false; boolean hasPayloads = false; boolean hasOffsets = false; boolean hasFreq = false; boolean hasNorms = false; boolean hasDocValues = false; boolean hasPointValues = false; this.filteredNames = new HashSet<>(filterFields); this.filtered = new ArrayList<>(filterFields.size()); for (FieldInfo fi : src) { if (this.filteredNames.contains(fi.name)) { this.filtered.add(fi); hasVectors |= fi.hasVectors(); hasProx |= fi.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0; hasFreq |= fi.getIndexOptions() != IndexOptions.DOCS; hasOffsets |= fi.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0; hasNorms |= fi.hasNorms(); hasDocValues |= fi.getDocValuesType() != DocValuesType.NONE; hasPayloads |= fi.hasPayloads(); hasPointValues |= (fi.getPointDimensionCount() != 0); } } this.filteredHasVectors = hasVectors; this.filteredHasProx = hasProx; this.filteredHasPayloads = hasPayloads; this.filteredHasOffsets = hasOffsets; this.filteredHasFreq = hasFreq; this.filteredHasNorms = hasNorms; this.filteredHasDocValues = hasDocValues; this.filteredHasPointValues = hasPointValues; }
Example 5
Source File: Lucene84PostingsWriter.java From lucene-solr with Apache License 2.0 | 5 votes |
@Override public void setField(FieldInfo fieldInfo) { super.setField(fieldInfo); skipWriter.setField(writePositions, writeOffsets, writePayloads); lastState = emptyState; fieldHasNorms = fieldInfo.hasNorms(); }
Example 6
Source File: Lucene50PostingsWriter.java From lucene-solr with Apache License 2.0 | 5 votes |
@Override public void setField(FieldInfo fieldInfo) { super.setField(fieldInfo); skipWriter.setField(writePositions, writeOffsets, writePayloads); lastState = emptyState; fieldHasNorms = fieldInfo.hasNorms(); }
Example 7
Source File: CollapsingQParserPlugin.java From lucene-solr with Apache License 2.0 | 5 votes |
ReaderWrapper(LeafReader leafReader, String field) { super(leafReader); // TODO can we just do "field" and not bother with the other fields? List<FieldInfo> newInfos = new ArrayList<>(in.getFieldInfos().size()); for (FieldInfo fieldInfo : in.getFieldInfos()) { if (fieldInfo.name.equals(field)) { FieldInfo f = new FieldInfo(fieldInfo.name, fieldInfo.number, fieldInfo.hasVectors(), fieldInfo.hasNorms(), fieldInfo.hasPayloads(), fieldInfo.getIndexOptions(), DocValuesType.NONE, fieldInfo.getDocValuesGen(), fieldInfo.attributes(), fieldInfo.getPointDimensionCount(), fieldInfo.getPointIndexDimensionCount(), fieldInfo.getPointNumBytes(), fieldInfo.isSoftDeletesField()); newInfos.add(f); } else { newInfos.add(fieldInfo); } } FieldInfos infos = new FieldInfos(newInfos.toArray(new FieldInfo[newInfos.size()])); this.fieldInfos = infos; }
Example 8
Source File: TestUtil.java From lucene-solr with Apache License 2.0 | 4 votes |
private static void checkReaderSanity(LeafReader reader) throws IOException { for (FieldInfo info : reader.getFieldInfos()) { // reader shouldn't return normValues if the field does not have them if (!info.hasNorms()) { if (reader.getNormValues(info.name) != null) { throw new RuntimeException("field: " + info.name + " should omit norms but has them!"); } } // reader shouldn't return docValues if the field does not have them // reader shouldn't return multiple docvalues types for the same field. switch(info.getDocValuesType()) { case NONE: if (reader.getBinaryDocValues(info.name) != null || reader.getNumericDocValues(info.name) != null || reader.getSortedDocValues(info.name) != null || reader.getSortedSetDocValues(info.name) != null) { throw new RuntimeException("field: " + info.name + " has docvalues but should omit them!"); } break; case SORTED: if (reader.getBinaryDocValues(info.name) != null || reader.getNumericDocValues(info.name) != null || reader.getSortedNumericDocValues(info.name) != null || reader.getSortedSetDocValues(info.name) != null) { throw new RuntimeException(info.name + " returns multiple docvalues types!"); } break; case SORTED_NUMERIC: if (reader.getBinaryDocValues(info.name) != null || reader.getNumericDocValues(info.name) != null || reader.getSortedSetDocValues(info.name) != null || reader.getSortedDocValues(info.name) != null) { throw new RuntimeException(info.name + " returns multiple docvalues types!"); } break; case SORTED_SET: if (reader.getBinaryDocValues(info.name) != null || reader.getNumericDocValues(info.name) != null || reader.getSortedNumericDocValues(info.name) != null || reader.getSortedDocValues(info.name) != null) { throw new RuntimeException(info.name + " returns multiple docvalues types!"); } break; case BINARY: if (reader.getNumericDocValues(info.name) != null || reader.getSortedDocValues(info.name) != null || reader.getSortedNumericDocValues(info.name) != null || reader.getSortedSetDocValues(info.name) != null) { throw new RuntimeException(info.name + " returns multiple docvalues types!"); } break; case NUMERIC: if (reader.getBinaryDocValues(info.name) != null || reader.getSortedDocValues(info.name) != null || reader.getSortedNumericDocValues(info.name) != null || reader.getSortedSetDocValues(info.name) != null) { throw new RuntimeException(info.name + " returns multiple docvalues types!"); } break; default: throw new AssertionError(); } } }