[C#] Lucene.net - 透過 IndexReader 刪除索引中的指定資料…
2012-10-05
使用 Lucene 建立索引後基本上,更新他做的動作都是刪除後,全部重做..
但是如果是要刪除某筆資料是可以做到的,這樣可以避免重新再製作一次 index ..
如何建立索引資料可以參考此篇 http://www.dotblogs.com.tw/junegoat/archive/2012/08/03/c-sharp-lucene-create-index.aspx
畢竟當資料一大,製作 index 是很花時間的…
原本製作 index 後我搜尋資料…
這時候我不想要將所有資料=重新做一次 index .. 但是我必須把索引中的 Id: 9 刪除這時候..
我們可以透過 IndexReder 讀取後 進行刪除該筆在 index 中的資料…
C# Code:
Stopwatch sw = new Stopwatch();
// 啟動計時器
sw.Start();
string indexPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "\\Index1\\";
DirectoryInfo dirInfo = new DirectoryInfo(indexPath);
FSDirectory dir = FSDirectory.Open(dirInfo);
// 讀取 index file
IndexReader reader = IndexReader.Open(dir, false);
// 透過 Term 敘述當 Id 是 9 的資料透過 IndexReader 去刪除
reader.DeleteDocuments(new Term("Id", "9"));
reader.Close();
sw.Stop();
Response.Write("刪除指定索引花費時間: " + sw.Elapsed + "");
這樣我們來看一下結果..
這樣該筆 9 資料就從 index 中被刪除了..
Source:
標籤:
ASP.net
,
C#
,
Lucene.net
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...