Exemple #1
0
        /// <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);
            }
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        /// <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));
        }