예제 #1
0
        public void Test1Filter()
        {
            BrowseRequest             request = CreateRequest(1, "prop3");
            FacetCountCollectorSource facetCountCollectorSource = attributesFacetHandler.GetFacetCountCollectorSource(request.GetSelection(AttributeHandlerName), request.GetFacetSpec(AttributeHandlerName));
            RandomAccessFilter        randomAccessFilter        = attributesFacetHandler.BuildFilter(request.GetSelection(AttributeHandlerName));
            DocIdSetIterator          iterator = randomAccessFilter.GetDocIdSet(boboReader).Iterator();
            int docId = iterator.NextDoc();

            int[] docIds = new int[2];
            int   i      = 0;

            while (docId != DocIdSetIterator.NO_MORE_DOCS)
            {
                docIds[i] = docId;
                i++;
                docId = iterator.NextDoc();
            }
            Assert.AreEqual(Arrays.ToString(new int[] { 1, 2 }), Arrays.ToString(docIds));

            BrowseResult res = browser.Browse(request);

            Assert.AreEqual(res.NumHits, 2);
            IFacetAccessible          fa     = res.GetFacetAccessor(AttributeHandlerName);
            IEnumerable <BrowseFacet> facets = fa.GetFacets();

            Console.WriteLine(facets);
            Assert.AreEqual(3, facets.Count());
            BrowseFacet facet = facets.Get(0);

            Assert.AreEqual(1, facet.FacetValueHitCount);
        }
 public HistogramFacetCountCollectorSource(
     string dataHandlerName,
     FacetCountCollectorSource baseCollectorSrc,
     string name,
     FacetSpec ospec,
     T start,
     T end,
     T unit)
 {
     m_dataHandlerName  = dataHandlerName;
     m_baseCollectorSrc = baseCollectorSrc;
     m_name             = name;
     m_ospec            = ospec;
     m_start            = start;
     m_end  = end;
     m_unit = unit;
 }
예제 #3
0
        protected virtual FacetValidator CreateFacetValidator()
        {
            FacetHitCollector[]         collectors      = new FacetHitCollector[_facetCollectors.Count()];
            FacetCountCollectorSource[] countCollectors = new FacetCountCollectorSource[collectors.Length];
            int numPostFilters;
            int i = 0;
            int j = collectors.Length;

            foreach (FacetHitCollector facetCollector in _facetCollectors)
            {
                if (facetCollector._filter != null)
                {
                    collectors[i]      = facetCollector;
                    countCollectors[i] = facetCollector._facetCountCollectorSource;
                    i++;
                }
                else
                {
                    j--;
                    collectors[j]      = facetCollector;
                    countCollectors[j] = facetCollector._facetCountCollectorSource;
                }
            }
            numPostFilters = i;

            if (numPostFilters == 0)
            {
                return(new NoNeedFacetValidator(collectors));
            }
            else if (numPostFilters == 1)
            {
                return(new OnePostFilterFacetValidator(collectors));
            }
            else
            {
                return(new DefaultFacetValidator(collectors, numPostFilters));
            }
        }
예제 #4
0
 public void SetNextReader(BoboSegmentReader reader, int docBase)
 {
     if (CollectAllSource != null)
     {
         IFacetCountCollector collector = CollectAllSource.GetFacetCountCollector(reader, docBase);
         CollectAllCollectorList.Add(collector);
         collector.CollectAll();
     }
     else
     {
         if (Filter != null)
         {
             CurrentPointers.DocIdSet             = Filter.GetRandomAccessDocIdSet(reader);
             CurrentPointers.PostDocIDSetIterator = CurrentPointers.DocIdSet.GetIterator();
             CurrentPointers.Doc = CurrentPointers.PostDocIDSetIterator.NextDoc();
         }
         if (FacetCountCollectorSource != null)
         {
             CurrentPointers.FacetCountCollector = FacetCountCollectorSource.GetFacetCountCollector(reader, docBase);
             CountCollectorList.Add(CurrentPointers.FacetCountCollector);
         }
     }
 }
        public override FacetCountCollectorSource GetFacetCountCollectorSource(BrowseSelection sel, FacetSpec ospec)
        {
            FacetCountCollectorSource baseCollectorSrc = m_dataFacetHandler.GetFacetCountCollectorSource(sel, ospec);

            return(new HistogramFacetCountCollectorSource(m_dataHandlerName, baseCollectorSrc, m_name, ospec, m_start, m_end, m_unit));
        }