Lucene.Net.Index.ReadersAndUpdates.Delete C# (CSharp) Метод

Delete() публичный Метод

public Delete ( int docID ) : bool
docID int
Результат bool
        public virtual bool Delete(int docID)
        {
            lock (this)
            {
                Debug.Assert(LiveDocs_Renamed != null);
                //Debug.Assert(Thread.holdsLock(Writer));
                Debug.Assert(docID >= 0 && docID < LiveDocs_Renamed.Length(), "out of bounds: docid=" + docID + " liveDocsLength=" + LiveDocs_Renamed.Length() + " seg=" + Info.Info.Name + " docCount=" + Info.Info.DocCount);
                Debug.Assert(!LiveDocsShared);
                bool didDelete = LiveDocs_Renamed.Get(docID);
                if (didDelete)
                {
                    ((MutableBits)LiveDocs_Renamed).Clear(docID);
                    PendingDeleteCount_Renamed++;
                    //System.out.println("  new del seg=" + info + " docID=" + docID + " pendingDelCount=" + pendingDeleteCount + " totDelCount=" + (info.docCount-liveDocs.count()));
                }
                return didDelete;
            }
        }

Usage Example

Пример #1
0
        // Delete by query
        private static long ApplyQueryDeletes(IEnumerable <QueryAndLimit> queriesIter, ReadersAndUpdates rld, SegmentReader reader)
        {
            long delCount = 0;
            AtomicReaderContext readerContext = reader.AtomicContext;
            bool any = false;

            foreach (QueryAndLimit ent in queriesIter)
            {
                Query    query = ent.Query;
                int?     limit = ent.Limit;
                DocIdSet docs  = (new QueryWrapperFilter(query)).GetDocIdSet(readerContext, reader.LiveDocs);
                if (docs != null)
                {
                    DocIdSetIterator it = docs.GetIterator();
                    if (it != null)
                    {
                        while (true)
                        {
                            int doc = it.NextDoc();
                            if (doc >= limit)
                            {
                                break;
                            }

                            if (!any)
                            {
                                rld.InitWritableLiveDocs();
                                any = true;
                            }

                            if (rld.Delete(doc))
                            {
                                delCount++;
                            }
                        }
                    }
                }
            }

            return(delCount);
        }
All Usage Examples Of Lucene.Net.Index.ReadersAndUpdates::Delete