Пример #1
0
        private ScaleInfo CreateScaleInfo(IDictionary context, AtomicReaderContext readerContext)
        {
            var leaves = ReaderUtil.GetTopLevelContext(readerContext).Leaves;

            float minVal = float.PositiveInfinity;
            float maxVal = float.NegativeInfinity;

            foreach (AtomicReaderContext leaf in leaves)
            {
                int            maxDoc = leaf.Reader.MaxDoc;
                FunctionValues vals   = m_source.GetValues(context, leaf);
                for (int i = 0; i < maxDoc; i++)
                {
                    float val = vals.SingleVal(i);
                    if ((J2N.BitConversion.SingleToRawInt32Bits(val) & (0xff << 23)) == 0xff << 23)
                    {
                        // if the exponent in the float is all ones, then this is +Inf, -Inf or NaN
                        // which don't make sense to factor into the scale function
                        continue;
                    }
                    if (val < minVal)
                    {
                        minVal = val;
                    }
                    if (val > maxVal)
                    {
                        maxVal = val;
                    }
                }
            }

            if (minVal == float.PositiveInfinity)
            {
                // must have been an empty index
                minVal = maxVal = 0;
            }

            var scaleInfo = new ScaleInfo {
                MinVal = minVal, MaxVal = maxVal
            };

            context[this] = scaleInfo;
            return(scaleInfo);
        }
Пример #2
0
            /// <summary>
            /// NOTE: This was floatVal() in Lucene
            /// </summary>
            public override float SingleVal(int doc)
            {
                float val = vals.SingleVal(doc);

                return((val >= outerInstance.m_min && val <= outerInstance.m_max) ? targets.SingleVal(doc) : (outerInstance.m_defaultVal == null ? val : defaults.SingleVal(doc)));
            }
Пример #3
0
 /// <summary>
 /// NOTE: This was floatVal() in Lucene
 /// </summary>
 public override float SingleVal(int doc)
 {
     return(ifVals.BoolVal(doc) ? trueVals.SingleVal(doc) : falseVals.SingleVal(doc));
 }
Пример #4
0
 /// <summary>
 /// NOTE: This was floatVal() in Lucene
 /// </summary>
 public override float SingleVal(int doc)
 {
     return(vals.SingleVal(doc) * outerInstance.m_slope + outerInstance.m_intercept);
 }
Пример #5
0
 protected override float Func(int doc, FunctionValues aVals, FunctionValues bVals)
 {
     return((float)Math.Pow(aVals.SingleVal(doc), bVals.SingleVal(doc)));
 }
Пример #6
0
 /// <summary>
 /// NOTE: This was floatVal() in Lucene
 /// </summary>
 public override float SingleVal(int doc)
 {
     return((vals.SingleVal(doc) - minSource) * scale + outerInstance.m_min);
 }
Пример #7
0
 /// <summary>
 /// NOTE: This was floatVal() in Lucene
 /// </summary>
 public override float SingleVal(int doc)
 {
     return(outerInstance.m_a / (outerInstance.m_m * vals.SingleVal(doc) + outerInstance.m_b));
 }
Пример #8
0
 /// <summary>
 /// NOTE: This was floatVal() in Lucene
 /// </summary>
 public override void SingleVal(int doc, float[] vals)
 {
     vals[0] = x.SingleVal(doc);
     vals[1] = y.SingleVal(doc);
 }
Пример #9
0
 protected override float Func(int doc, FunctionValues aVals, FunctionValues bVals)
 {
     return(aVals.SingleVal(doc) / bVals.SingleVal(doc));
 }