internal TermListRandomAccessDocIdSet(string name, RandomAccessDocIdSet innerSet, IEnumerable <string> vals, IndexReader reader) { _name = name; _innerSet = innerSet; _vals = vals; _reader = reader; }
public override RandomAccessDocIdSet GetRandomAccessDocIdSet(BoboSegmentReader reader) { RandomAccessDocIdSet innerDocIdSet = m_innerFilter.GetRandomAccessDocIdSet(reader); DocIdSet notInnerDocIdSet = new NotDocIdSet(innerDocIdSet, reader.MaxDoc); return(new NotRandomAccessDocIdSet(innerDocIdSet, notInnerDocIdSet)); }
public override sealed bool Validate(int docid) { FacetHitCollector.CurrentPointers miss = null; RandomAccessDocIdSet @set = _firsttime._currentPointers.DocIdSet; if (@set != null && [email protected](docid)) { miss = _firsttime._currentPointers; } _nextTarget = docid + 1; if (miss != null) { miss.FacetCountCollector.Collect(docid); return(false); } else { foreach (IFacetCountCollector collector in _countCollectors) { collector.Collect(docid); } return(true); } }
internal TermListRandomAccessDocIdSet(string name, RandomAccessDocIdSet innerSet, IList <string> vals, AtomicReader reader) { m_name = name; m_innerSet = innerSet; m_vals = vals; m_reader = reader; }
public override RandomAccessDocIdSet GetRandomAccessDocIdSet(BoboIndexReader reader) { RandomAccessDocIdSet innerDocSet = _facetFilter.GetRandomAccessDocIdSet(reader); if (innerDocSet == EmptyDocIdSet.Instance) { return(innerDocSet); } FacetDataCache dataCache = _facetDataCacheBuilder.Build(reader); int totalCount = reader.MaxDoc; ITermValueList valArray = dataCache.ValArray; int freqCount = 0; var validVals = new List <string>(_valSet.Count()); foreach (string val in _valSet) { int idx = valArray.IndexOf(val); if (idx >= 0) { validVals.Add(valArray.Get(idx)); // get and format the value freqCount += dataCache.Freqs[idx]; } } if (validVals.Count == 0) { return(EmptyDocIdSet.Instance); } // takeComplement is only used to choose between TermListRandomAccessDocIdSet and innerDocSet int validFreqCount = _takeComplement ? (totalCount - freqCount) : freqCount; if (_facetDataCacheBuilder.IndexFieldName != null && ((validFreqCount << 1) < totalCount)) { return(new TermListRandomAccessDocIdSet(_facetDataCacheBuilder.IndexFieldName, innerDocSet, validVals, reader)); } else { return(innerDocSet); } }
// NOTE: The Weight.Scorer method lost the scoreDocsInOrder and topScorer parameters between // Lucene 4.3.0 and 4.8.0. They are not used by BoboBrowse anyway, so the code here diverges // from the original Java source to remove these two parameters. // public override Scorer Scorer(AtomicReaderContext context, bool scoreDocsInOrder, bool topScorer, Bits acceptDocs) public override Scorer GetScorer(AtomicReaderContext context, IBits acceptDocs) { AtomicReader reader = context.AtomicReader; if (reader is BoboSegmentReader) { BoboSegmentReader boboReader = (BoboSegmentReader)reader; IFacetHandler fhandler = boboReader.GetFacetHandler(m_parent.m_name); if (fhandler != null) { DocIdSetIterator dociter = null; RandomAccessFilter filter = fhandler.BuildFilter(m_parent.m_sel); if (filter != null) { RandomAccessDocIdSet docset = filter.GetRandomAccessDocIdSet(boboReader); if (docset != null) { dociter = BuildIterator(docset, boboReader, acceptDocs); } } if (dociter == null) { dociter = new MatchAllDocIdSetIterator(reader, acceptDocs); } BoboDocScorer scorer = null; if (fhandler is IFacetScoreable) { scorer = ((IFacetScoreable)fhandler).GetDocScorer(boboReader, m_parent.m_scoringFactory, m_parent.m_boostMap); } return(new FacetTermScorer(m_parent, m_similarity, dociter, scorer)); } else { logger.Error("FacetHandler is not defined for the field: " + m_parent.m_name); } return(null); } else { throw new IOException("index reader not instance of " + typeof(BoboSegmentReader)); } }
public override Scorer Scorer(IndexReader reader, bool scoreDocsInOrder, bool topScorer) { if (reader is BoboIndexReader) { BoboIndexReader boboReader = (BoboIndexReader)reader; TermDocs termDocs = boboReader.TermDocs(null); IFacetHandler fhandler = boboReader.GetFacetHandler(parent._name); if (fhandler != null) { DocIdSetIterator dociter = null; RandomAccessFilter filter = fhandler.BuildFilter(parent._sel); if (filter != null) { RandomAccessDocIdSet docset = filter.GetRandomAccessDocIdSet(boboReader); if (docset != null) { dociter = BuildIterator(docset, termDocs); } } if (dociter == null) { dociter = new MatchAllDocIdSetIterator(reader); } BoboDocScorer scorer = null; if (fhandler is IFacetScoreable) { scorer = ((IFacetScoreable)fhandler).GetDocScorer(boboReader, parent._scoringFactory, parent._boostMap); } return(new FacetTermScorer(parent, _similarity, dociter, scorer)); } else { logger.Error("FacetHandler is not defined for the field: " + parent._name); } return(null); } else { throw new IOException("index reader not instance of " + typeof(BoboIndexReader)); } }
public override RandomAccessDocIdSet GetRandomAccessDocIdSet(BoboIndexReader reader) { var count = _filters.Count(); if (count == 1) { return(_filters.ElementAt(0).GetRandomAccessDocIdSet(reader)); } else { List <DocIdSet> list = new List <DocIdSet>(count); List <RandomAccessDocIdSet> randomAccessList = new List <RandomAccessDocIdSet>(count); foreach (RandomAccessFilter f in _filters) { RandomAccessDocIdSet s = f.GetRandomAccessDocIdSet(reader); list.Add(s); randomAccessList.Add(s); } RandomAccessDocIdSet[] randomAccessDocIdSets = randomAccessList.ToArray(); DocIdSet andDocIdSet = new AndDocIdSet(list); return(new RandomAccessAndFilterSet(randomAccessDocIdSets, andDocIdSet)); } }
public override RandomAccessDocIdSet GetRandomAccessDocIdSet(BoboSegmentReader reader) { var count = m_filters.Count; if (count == 1) { return(m_filters[0].GetRandomAccessDocIdSet(reader)); } else { List <DocIdSet> list = new List <DocIdSet>(count); List <RandomAccessDocIdSet> randomAccessList = new List <RandomAccessDocIdSet>(count); foreach (RandomAccessFilter f in m_filters) { RandomAccessDocIdSet s = f.GetRandomAccessDocIdSet(reader); list.Add(s); randomAccessList.Add(s); } RandomAccessDocIdSet[] randomAccessDocIdSets = randomAccessList.ToArray(); DocIdSet orDocIdSet = new OrDocIdSet(list); return(new RandomOrFilterDocIdSet(randomAccessDocIdSets, orDocIdSet)); } }
public NotRandomAccessDocIdSet(RandomAccessDocIdSet innerDocIdSet, DocIdSet notInnerDocIdSet) { this.innerDocIdSet = innerDocIdSet; this.notInnerDocIdSet = notInnerDocIdSet; }
public FacetTermQueryDocIdSetIterator(RandomAccessDocIdSet docset, BoboSegmentReader reader, IBits acceptDocs) { m_docset = docset; m_maxDoc = reader.MaxDoc; m_acceptDocs = acceptDocs; }
private DocIdSetIterator BuildIterator(RandomAccessDocIdSet docset, BoboSegmentReader reader, IBits acceptDocs) { return(new FacetTermQueryDocIdSetIterator(docset, reader, acceptDocs)); }
public FacetTermQueryDocIdSetIterator(RandomAccessDocIdSet docset, TermDocs td) { _docset = docset; _td = td; }
private DocIdSetIterator BuildIterator(RandomAccessDocIdSet docset, TermDocs td) { return(new FacetTermQueryDocIdSetIterator(docset, td)); }