lucene索引管理(索引建立於刪除)

2021-08-30 21:19:25 字數 844 閱讀 6615

若需要從索引中刪除某乙個或者某一類文件,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...