若需要從索引中刪除某乙個或者某一類文件,indexreader提供了兩種方法:
reader.deletedocument(int docnum)
reader.deletedocuments(term term)
前者是根據文件的編號來刪除該文件,docnum是該文件進入索引時lucene的編號,是按照順序編的;後者是刪除滿足某乙個條件的多個文件。
在執行了deletedocument或者deletedocuments方法後,系統會生成乙個*.del的檔案,該檔案中記錄了刪除的文件,但 並未從物理上刪除這些文件。此時,這些文件是受保護的,當使用document doc = reader.document(i)來訪問這些受保護的文件時,lucene會報「attempt to access a deleted document」異常。如果一次需要刪除多個文件時,可以用兩種方法來解決:
1. 刪除乙個文件後,用indexwriter的optimize方法來優化索引,這樣我們就可以繼續刪除另乙個文件。
2. 先掃瞄整個索引檔案,記錄下需要刪除的文件在索引中的編號。然後,一次性呼叫deletedocument刪除這些文件,再呼叫indexwriter的 optimize方法來優化索引。
執行結果:
找到符合條件的document:2
0北京今天天氣很好
1北京市海淀區中關村科技園
~~~~~~~~~~~~~~~~刪除索引後~~~~~~~~~~~~~~~~~
找到符合條件的document:1
0北京今天天氣很好
在用indexreader的時候需要注意:
open方法需要設定操作索引的許可權 ,true 表示readonly,false表示可寫可刪除
Lucene 建立索引
public class indexer public static string indexdir d luceneindex public static void main string args system.out.println 被索引的文件個數 writer.numdocs catch ...
Lucene之建立索引
lucene用來建搜尋引擎要解決四個問題 抓取資料 解析資料 建立索引和執行搜尋。首先為每一篇文章新增標題 內容 寫作時間等資訊,從而寫好每一篇文章,然後將每一篇文章新增到書裡面去。這樣問及就寫好了。建立索引的過程如下 建立索引器indexwriter,這相當於一本書的框架。建立文件物件docmen...
如何建立Lucene索引
需要用到的ipa indexwriter 這個是索引建立的中心元件,通過他就可以建立索引,它是生成索引的過程 與讀取和搜尋索引沒有關係 初始化化它時,需要傳遞的兩個引數。第乙個是引數是指定索引建立的位置,第二是引數是配置分詞器。document 這個文字相當於資料庫中的一條記錄,它裡面需要新增fie...