예제 #1
0
            public FacetBasedBoostingScorer(FacetBasedBoostScorerBuilder parent, BoboSegmentReader reader, Scorer innerScorer)
                : base(innerScorer.Weight)
            {
                m_innerScorer = innerScorer;

                List <BoboDocScorer> list = new List <BoboDocScorer>();

                foreach (var boostEntry in parent.m_boostMaps)
                {
                    string        facetName = boostEntry.Key;
                    IFacetHandler handler   = reader.GetFacetHandler(facetName);
                    if (!(handler is IFacetScoreable))
                    {
                        throw new ArgumentException(facetName + " does not implement IFacetScoreable");
                    }
                    IFacetScoreable facetScoreable = (IFacetScoreable)handler;
                    BoboDocScorer   scorer         = facetScoreable.GetDocScorer(reader, parent.m_scoringFunctionFactory, boostEntry.Value);
                    if (scorer != null)
                    {
                        list.Add(scorer);
                    }
                }
                m_facetScorers = list.ToArray();
                m_docid        = -1;
            }
            public FacetBasedBoostingScorer(FacetBasedBoostScorerBuilder parent, BoboIndexReader reader, Similarity similarity, Scorer innerScorer)
                : base(similarity)
            {
                _innerScorer = innerScorer;

                List<BoboDocScorer> list = new List<BoboDocScorer>();

                foreach (var boostEntry in parent._boostMaps)
                {
                    string facetName = boostEntry.Key;
                    IFacetHandler handler = reader.GetFacetHandler(facetName);
                    if (!(handler is IFacetScoreable))
                        throw new ArgumentException(facetName + " does not implement FacetScoreable");
                    IFacetScoreable facetScoreable = (IFacetScoreable)handler;
                    BoboDocScorer scorer = facetScoreable.GetDocScorer(reader, parent._scoringFunctionFactory, boostEntry.Value);
                    if (scorer != null) list.Add(scorer);
                }
                _facetScorers = list.ToArray();
                _docid = -1;
            }