⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 documentdeletetest.cs

📁 DotLucentet,用来做撬
💻 CS
字号:
using System;
using Lucene.Net.Index;
using Lucene.Net.Search;
using NUnit.Framework;

namespace dotLucene.inAction.Index
{

	[TestFixture]
	public class DocumentDeleteTest : BaseIndexingTestCase
	{
		[Test]
		public void testDeleteBeforeIndexMerge()
		{
	
			IndexReader reader = IndexReader.Open(dir);  //当前索引中有两个Document

			Assert.AreEqual(2, reader.MaxDoc());        //文档从0开始计数,MaxDoc表示下一个文档的序号
			Assert.AreEqual(2, reader.NumDocs());       //NumDocs表示当前索引中文档的个数  
			reader.Delete(1);							//对标号为1的文档标记为待删除,逻辑删除
			Assert.IsTrue(reader.IsDeleted(1));         //检测某个序号的文档是否被标记删除
			Assert.IsTrue(reader.HasDeletions());       //检测索引中是否有Document被标记删除 
			Assert.AreEqual(2, reader.MaxDoc());        //当前下一个文档序号仍然为2
			Assert.AreEqual(1, reader.NumDocs());       //当前索引中文档数变成1
			reader.Close();                             //此时真正从物理上删除之前被标记的文档
			reader = IndexReader.Open(dir);
			Assert.AreEqual(2, reader.MaxDoc());         
			Assert.AreEqual(1, reader.NumDocs());
			reader.Close();
		}

		[Test]
		public void DeleteAfterIndexMerge()            //在索引重排之后
		{

			IndexReader reader = IndexReader.Open(dir);
			Assert.AreEqual(2, reader.MaxDoc());
			Assert.AreEqual(2, reader.NumDocs());
			reader.Delete(1);
			reader.Close();
			IndexWriter writer = new IndexWriter(dir, GetAnalyzer(), false);
			writer.Optimize();                          //索引重排
			writer.Close();
			reader = IndexReader.Open(dir);
       
			Assert.IsFalse(reader.IsDeleted(1));
			Assert.IsFalse(reader.HasDeletions());
			Assert.AreEqual(1, reader.MaxDoc());       //索引重排后,下一个文档序号变为1
			Assert.AreEqual(1, reader.NumDocs());
			reader.Close();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -