Lucene.Net.Index.IndexWriter.WaitForMerges C# (CSharp) Method

WaitForMerges() public method

Wait for any currently outstanding merges to finish.

It is guaranteed that any merges started prior to calling this method will have completed once this method completes.

public WaitForMerges ( ) : void
return void
		public virtual void  WaitForMerges()
		{
			lock (this)
			{
				// Ensure any running addIndexes finishes.
				AcquireRead();
				ReleaseRead();
				
				while (pendingMerges.Count > 0 || runningMerges.Count > 0)
				{
					DoWait();
				}
				
				// sanity check
				System.Diagnostics.Debug.Assert(0 == mergingSegments.Count);
			}
		}
		

Usage Example

        public virtual void TestMaxNumSegments2([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")] Func <IConcurrentMergeScheduler> newScheduler)
        {
            Directory dir = NewDirectory();

            Document doc = new Document();

            doc.Add(NewStringField("content", "aaa", Field.Store.NO));

            LogDocMergePolicy ldmp = new LogDocMergePolicy();

            ldmp.MinMergeDocs = 1;
            ldmp.MergeFactor  = 4;
            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                         .SetMaxBufferedDocs(2)
                         .SetMergePolicy(ldmp)
                         .SetMergeScheduler(newScheduler());
            IndexWriter writer = new IndexWriter(dir, config);

            for (int iter = 0; iter < 10; iter++)
            {
                for (int i = 0; i < 19; i++)
                {
                    writer.AddDocument(doc);
                }

                writer.Commit();
                writer.WaitForMerges();
                writer.Commit();

                SegmentInfos sis = new SegmentInfos();
                sis.Read(dir);

                int segCount = sis.Count;
                writer.ForceMerge(7);
                writer.Commit();
                writer.WaitForMerges();

                sis = new SegmentInfos();
                sis.Read(dir);
                int optSegCount = sis.Count;

                if (segCount < 7)
                {
                    Assert.AreEqual(segCount, optSegCount);
                }
                else
                {
                    Assert.AreEqual(7, optSegCount, "seg: " + segCount);
                }
            }
            writer.Dispose();
            dir.Dispose();
        }
All Usage Examples Of Lucene.Net.Index.IndexWriter::WaitForMerges
IndexWriter