?? documentdeletetest.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 + -