コード例 #1
0
                protected internal override sealed bool MatchDoc(int doc)
                {
                    int ord = fcsi.GetOrd(doc);

                    if (ord == -1)
                    {
                        return(false);
                    }
                    return(termSet.Get(ord));
                }
コード例 #2
0
 protected internal override sealed bool MatchDoc(int doc)
 {
     docTermOrds.SetDocument(doc);
     long ord;
     // TODO: we could track max bit set and early terminate (since they come in sorted order)
     while ((ord = docTermOrds.NextOrd()) != SortedSetDocValues.NO_MORE_ORDS)
     {
         if (termSet.Get(ord))
         {
             return true;
         }
     }
     return false;
 }
コード例 #3
0
            /// <summary>
            /// Returns a <see cref="DocIdSet"/> with documents that should be permitted in search
            /// results.
            /// </summary>
            public override DocIdSet GetDocIdSet(AtomicReaderContext context, IBits acceptDocs)
            {
                SortedSetDocValues docTermOrds = FieldCache.DEFAULT.GetDocTermOrds((context.AtomicReader), m_query.m_field);
                // Cannot use FixedBitSet because we require long index (ord):
                Int64BitSet termSet   = new Int64BitSet(docTermOrds.ValueCount);
                TermsEnum   termsEnum = m_query.GetTermsEnum(new TermsAnonymousInnerClassHelper(docTermOrds));

                if (Debugging.AssertsEnabled)
                {
                    Debugging.Assert(termsEnum != null);
                }
                if (termsEnum.MoveNext())
                {
                    // fill into a bitset
                    do
                    {
                        termSet.Set(termsEnum.Ord);
                    } while (termsEnum.MoveNext());
                }
                else
                {
                    return(null);
                }
                return(new FieldCacheDocIdSet(context.Reader.MaxDoc, acceptDocs, (doc) =>
                {
                    docTermOrds.SetDocument(doc);
                    long ord;
                    // TODO: we could track max bit set and early terminate (since they come in sorted order)
                    while ((ord = docTermOrds.NextOrd()) != SortedSetDocValues.NO_MORE_ORDS)
                    {
                        if (termSet.Get(ord))
                        {
                            return true;
                        }
                    }
                    return false;
                }));
            }
コード例 #4
0
            /// <summary>
            /// Returns a DocIdSet with documents that should be permitted in search
            /// results.
            /// </summary>
            public override DocIdSet GetDocIdSet(AtomicReaderContext context, IBits acceptDocs)
            {
                SortedDocValues fcsi = FieldCache.DEFAULT.GetTermsIndex((context.AtomicReader), m_query.m_field);
                // Cannot use FixedBitSet because we require long index (ord):
                Int64BitSet termSet   = new Int64BitSet(fcsi.ValueCount);
                TermsEnum   termsEnum = m_query.GetTermsEnum(new TermsAnonymousInnerClassHelper(fcsi));

                if (Debugging.AssertsEnabled)
                {
                    Debugging.Assert(termsEnum != null);
                }
                if (termsEnum.MoveNext())
                {
                    // fill into a bitset
                    do
                    {
                        long ord = termsEnum.Ord;
                        if (ord >= 0)
                        {
                            termSet.Set(ord);
                        }
                    } while (termsEnum.MoveNext());
                }
                else
                {
                    return(null);
                }

                return(new FieldCacheDocIdSet(context.Reader.MaxDoc, acceptDocs, (doc) =>
                {
                    int ord = fcsi.GetOrd(doc);
                    if (ord == -1)
                    {
                        return false;
                    }
                    return termSet.Get(ord);
                }));
            }
コード例 #5
0
ファイル: DocValuesConsumer.cs プロジェクト: ywscr/lucenenet
 protected override AcceptStatus Accept(BytesRef term)
 {
     return(liveTerms.Get(Ord) ? AcceptStatus.YES : AcceptStatus.NO);
 }