Esempio n. 1
0
 public virtual Explanation Explain(IndexReader reader, int doc, Explanation innerExplanation)
 {
     if (reader is BoboIndexReader)
     {
         BoboIndexReader boboReader = (BoboIndexReader)reader;
         object          dataObj    = boboReader.GetFacetData(_timeFacetName);
         if (dataObj is FacetDataCache)
         {
             FacetDataCache    facetDataCache = (FacetDataCache)(boboReader.GetFacetData(_timeFacetName));
             BigSegmentedArray orderArray     = facetDataCache.OrderArray;
             TermLongList      termList       = (TermLongList)facetDataCache.ValArray;
             long        now       = System.Environment.TickCount;
             Explanation finalExpl = new Explanation();
             finalExpl.AddDetail(innerExplanation);
             float rawScore   = innerExplanation.Value;
             long  timeVal    = termList.GetPrimitiveValue(orderArray.Get(doc));
             float timeScore  = ComputeTimeFactor(timeVal);
             float finalScore = CombineScores(timeScore, rawScore);
             finalExpl.Value       = finalScore;
             finalExpl.Description = "final score = (time score: " + timeScore + ") * (raw score: " + rawScore + "), timeVal: " + timeVal;
             return(finalExpl);
         }
         else
         {
             throw new InvalidOperationException("underlying facet data must be of type FacetDataCache<long>");
         }
     }
     else
     {
         throw new ArgumentException("reader not instance of " + typeof(BoboIndexReader));
     }
 }
Esempio n. 2
0
 public RecencyBoostScorer(RecencyBoostScorerBuilder parent, Scorer innerScorer, BigSegmentedArray orderArray, TermLongList termList)
     : base(innerScorer.Similarity)
 {
     _parent      = parent;
     _innerScorer = innerScorer;
     _orderArray  = orderArray;
     _termList    = termList;
 }
 public DefaultLongFacetIterator(TermLongList valList, BigSegmentedArray countarray, int countlength, bool zeroBased)
 {
     _valList             = valList;
     _countlength         = countlength;
     _count               = countarray;
     _countLengthMinusOne = _countlength - 1;
     _index               = -1;
     if (!zeroBased)
     {
         _index++;
     }
     _facet = TermLongList.VALUE_MISSING;
     count  = 0;
 }
Esempio n. 4
0
 public virtual Scorer CreateScorer(Scorer innerScorer, IndexReader reader, bool scoreDocsInOrder, bool topScorer)
 {
     if (reader is BoboIndexReader)
     {
         BoboIndexReader boboReader = (BoboIndexReader)reader;
         object          dataObj    = boboReader.GetFacetData(_timeFacetName);
         if (dataObj is FacetDataCache)
         {
             FacetDataCache    facetDataCache = (FacetDataCache)(boboReader.GetFacetData(_timeFacetName));
             BigSegmentedArray orderArray     = facetDataCache.OrderArray;
             TermLongList      termList       = (TermLongList)facetDataCache.ValArray;
             return(new RecencyBoostScorer(this, innerScorer, orderArray, termList));
         }
         else
         {
             throw new InvalidOperationException("underlying facet data must be of type FacetDataCache<long>");
         }
     }
     else
     {
         throw new ArgumentException("reader not instance of " + typeof(BoboIndexReader));
     }
 }
            private void Aggregate()
            {
                if (_isAggregated)
                {
                    return;
                }

                _isAggregated = true;

                int startIdx = _valArray.IndexOf(_start);

                if (startIdx < 0)
                {
                    startIdx = -(startIdx + 1);
                }

                int endIdx = _valArray.IndexOf(_end);

                if (endIdx < 0)
                {
                    endIdx = -(endIdx + 1);
                }

                BigSegmentedArray baseCounts = _baseCollector.GetCountDistribution();

                if (_start is long)
                {
                    long         start    = Convert.ToInt64(_start);
                    long         unit     = Convert.ToInt64(_unit);
                    TermLongList valArray = (TermLongList)_valArray;
                    for (int i = startIdx; i < endIdx; i++)
                    {
                        long val = valArray.GetPrimitiveValue(i);
                        int  idx = (int)((val - start) / unit);
                        if (idx >= 0 && idx < _count.Size())
                        {
                            _count.Add(idx, _count.Get(idx) + baseCounts.Get(i));
                        }
                    }
                }
                else if (_start is int)
                {
                    int         start    = Convert.ToInt32(_start);
                    int         unit     = Convert.ToInt32(_unit);
                    TermIntList valArray = (TermIntList)_valArray;
                    for (int i = startIdx; i < endIdx; i++)
                    {
                        int val = valArray.GetPrimitiveValue(i);
                        int idx = ((val - start) / unit);
                        if (idx >= 0 && idx < _count.Size())
                        {
                            _count.Add(idx, _count.Get(idx) + baseCounts.Get(i));
                        }
                    }
                }
                else
                {
                    double start = Convert.ToDouble(_start);
                    double unit  = Convert.ToDouble(_unit);
                    for (int i = startIdx; i < endIdx; i++)
                    {
                        double val = (double)_valArray.GetRawValue(i);
                        int    idx = (int)((val - start) / unit);
                        if (idx >= 0 && idx < _count.Size())
                        {
                            _count.Add(idx, _count.Get(idx) + baseCounts.Get(i));
                        }
                    }
                }
            }