/** Call this to get the (merged) FieldInfos representing the * set of indexed fields <b>only</b> for a composite reader. * <p> * NOTE: the returned field numbers will likely not * correspond to the actual field numbers in the underlying * readers, and codec metadata ({@link FieldInfo#getAttribute(String)} * will be unavailable. */ public static Collection<String> getIndexedFields(IndexReader reader) { final Collection<String> fields = new HashSet<>(); for(final FieldInfo fieldInfo : getMergedFieldInfos(reader)) { if (fieldInfo.getIndexOptions() != IndexOptions.NONE) { fields.add(fieldInfo.name); } } return fields; }
return leaves.get(0).reader().getNormValues(field); FieldInfo fi = MultiFields.getMergedFieldInfos(r).fieldInfo(field); if (fi == null || fi.hasNorms() == false) { return null;
@Override public FieldInfos getFieldInfos() { ensureOpen(); return MultiFields.getMergedFieldInfos(in); }
public void assertFieldInfosEquals(String info, IndexReader leftReader, IndexReader rightReader) throws IOException { FieldInfos leftInfos = MultiFields.getMergedFieldInfos(leftReader); FieldInfos rightInfos = MultiFields.getMergedFieldInfos(rightReader); // TODO: would be great to verify more than just the names of the fields! TreeSet<String> left = new TreeSet<>(); TreeSet<String> right = new TreeSet<>(); for (FieldInfo fi : leftInfos) { left.add(fi.name); } for (FieldInfo fi : rightInfos) { right.add(fi.name); } assertEquals(info, left, right); }
@Override public FieldInfos getFieldInfos() { ensureOpen(); return MultiFields.getMergedFieldInfos(in); }
private static Set<String> getDVFields(IndexReader reader) { Set<String> fields = new HashSet<>(); for(FieldInfo fi : MultiFields.getMergedFieldInfos(reader)) { if (fi.getDocValuesType() != DocValuesType.NONE) { fields.add(fi.name); } } return fields; }
@Override public FieldInfos getFieldInfos() { ensureOpen(); return MultiFields.getMergedFieldInfos(in); }
/** Call this to get the (merged) FieldInfos representing the * set of indexed fields <b>only</b> for a composite reader. * <p> * NOTE: the returned field numbers will likely not * correspond to the actual field numbers in the underlying * readers, and codec metadata ({@link FieldInfo#getAttribute(String)} * will be unavailable. */ public static Collection<String> getIndexedFields(IndexReader reader) { final Collection<String> fields = new HashSet<>(); for(final FieldInfo fieldInfo : getMergedFieldInfos(reader)) { if (fieldInfo.getIndexOptions() != IndexOptions.NONE) { fields.add(fieldInfo.name); } } return fields; }
@Override public FieldStats stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } /** * we don't have a specific type for geo_shape so we use an empty {@link FieldStats.Text}. * TODO: we should maybe support a new type that knows how to (de)encode the min/max information */ return new FieldStats.Text(maxDoc, -1, -1, -1, isSearchable(), isAggregatable()); }
@Override public FieldStats stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } /** * we don't have a specific type for geo_point so we use an empty {@link FieldStats.Text}. * TODO: we should maybe support a new type that knows how to (de)encode the min/max information */ return new FieldStats.Text(maxDoc, -1, -1, -1, isSearchable(), isAggregatable()); } }
@Override public FieldStats stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } /** * we don't have a specific type for geo_shape so we use an empty {FieldStats.Text}. * TODO: we should maybe support a new type that knows how to (de)encode the min/max information */ return new FieldStats.Text(maxDoc, -1, -1, -1, isSearchable(), isAggregatable()); } }
@Override public FieldStats stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } /** * we don't have a specific type for geo_point so we use an empty {FieldStats.Text}. * TODO: we should maybe support a new type that knows how to (de)encode the min/max information */ return new FieldStats.Text(maxDoc, -1, -1, -1, isSearchable(), isAggregatable()); } }
@Override public FieldStats.GeoPoint stats(IndexReader reader) throws IOException { String field = name(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(field); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, field); if (terms == null) { return new FieldStats.GeoPoint(reader.maxDoc(), 0L, -1L, -1L, isSearchable(), isAggregatable()); } return new FieldStats.GeoPoint(reader.maxDoc(), terms.getDocCount(), -1L, terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), prefixCodedToGeoPoint(terms.getMin(), numericEncoded), prefixCodedToGeoPoint(terms.getMax(), numericEncoded)); } }
@Override public FieldStats.Long stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Long(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } long minValue = LegacyNumericUtils.getMinInt(terms); long maxValue = LegacyNumericUtils.getMaxInt(terms); return new FieldStats.Long(maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }
@Override public FieldStats stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Long(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } long minValue = LegacyNumericUtils.getMinLong(terms); long maxValue = LegacyNumericUtils.getMaxLong(terms); return new FieldStats.Long( maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }
@Override public FieldStats.Long stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Long(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } long minValue = LegacyNumericUtils.getMinInt(terms); long maxValue = LegacyNumericUtils.getMaxInt(terms); return new FieldStats.Long( maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }
@Override public FieldStats.Long stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Long(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } long minValue = LegacyNumericUtils.getMinInt(terms); long maxValue = LegacyNumericUtils.getMaxInt(terms); return new FieldStats.Long( maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }
@Override public FieldStats.Date stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Date(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } long minValue = LegacyNumericUtils.getMinLong(terms); long maxValue = LegacyNumericUtils.getMaxLong(terms); return new FieldStats.Date(maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), dateTimeFormatter(), minValue, maxValue); }
@Override public FieldStats.Double stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Double(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } float minValue = NumericUtils.sortableIntToFloat(LegacyNumericUtils.getMinInt(terms)); float maxValue = NumericUtils.sortableIntToFloat(LegacyNumericUtils.getMaxInt(terms)); return new FieldStats.Double(maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }
@Override public FieldStats.Double stats(IndexReader reader) throws IOException { int maxDoc = reader.maxDoc(); FieldInfo fi = org.apache.lucene.index.MultiFields.getMergedFieldInfos(reader).fieldInfo(name()); if (fi == null) { return null; } Terms terms = org.apache.lucene.index.MultiFields.getTerms(reader, name()); if (terms == null) { return new FieldStats.Double(maxDoc, 0, -1, -1, isSearchable(), isAggregatable()); } double minValue = NumericUtils.sortableLongToDouble(LegacyNumericUtils.getMinLong(terms)); double maxValue = NumericUtils.sortableLongToDouble(LegacyNumericUtils.getMaxLong(terms)); return new FieldStats.Double(maxDoc, terms.getDocCount(), terms.getSumDocFreq(), terms.getSumTotalTermFreq(), isSearchable(), isAggregatable(), minValue, maxValue); }