/// <summary> /// Returns true if there are norms stored for this field. </summary> /// @deprecated (4.0) use <seealso cref="#getFieldInfos()"/> and check <seealso cref="FieldInfo#hasNorms()"/> /// for the field instead. public bool HasNorms(string field) { EnsureOpen(); // note: using normValues(field) != null would potentially cause i/o FieldInfo fi = FieldInfos.FieldInfo(field); return(fi != null && fi.HasNorms()); }
public override NumericDocValues GetNormValues(string field) { NumericDocValues dv = base.GetNormValues(field); FieldInfo fi = FieldInfos.FieldInfo(field); if (dv != null) { Debug.Assert(fi != null); Debug.Assert(fi.HasNorms()); return(new AssertingNumericDocValues(dv, MaxDoc)); } else { Debug.Assert(fi == null || fi.HasNorms() == false); return(null); } }
public override NumericDocValues GetNormValues(string field) { EnsureOpen(); FieldInfo fi = FieldInfos_Renamed.FieldInfo(field); if (fi == null || !fi.HasNorms()) { // Field does not exist or does not index norms return(null); } return(Core.GetNormValues(fi)); }
/// <summary> /// Returns a NumericDocValues for a reader's norms (potentially merging on-the-fly). /// <p> /// this is a slow way to access normalization values. Instead, access them per-segment /// with <seealso cref="AtomicReader#getNormValues(String)"/> /// </p> /// </summary> public static NumericDocValues GetNormValues(IndexReader r, string field) { IList <AtomicReaderContext> leaves = r.Leaves; int size = leaves.Count; if (size == 0) { return(null); } else if (size == 1) { return(leaves[0].AtomicReader.GetNormValues(field)); } FieldInfo fi = MultiFields.GetMergedFieldInfos(r).FieldInfo(field); if (fi == null || fi.HasNorms() == false) { return(null); } bool anyReal = false; NumericDocValues[] values = new NumericDocValues[size]; int[] starts = new int[size + 1]; for (int i = 0; i < size; i++) { AtomicReaderContext context = leaves[i]; NumericDocValues v = context.AtomicReader.GetNormValues(field); if (v == null) { v = DocValues.EMPTY_NUMERIC; } else { anyReal = true; } values[i] = v; starts[i] = context.DocBase; } starts[size] = r.MaxDoc; Debug.Assert(anyReal); return(new NumericDocValuesAnonymousInnerClassHelper(values, starts)); }