delete很簡單。只要在add記錄的時候把它產生的index保存然后建立另外的索引。然后用IndexReader類中的delete()方法進行刪除即可。delete有兩個實現方式:delete(int i)和delete(Term term)
對于第一個不用說,把記錄的index給它就可以。第二個實現方式需要創建一個Term對象。
Term t=new Term("id","idValue");
這里的id是你加入記錄中的字段,idValue是字段的內容.下面是具體實現方法:
public int deleteRecords(String field, String text) {
int delete = 0;
try {
Directory directory = FSDirectory.getDirectory(file, false);
Term term = new Term(field, text);
IndexReader reader = IndexReader.open(directory);
reader.unlock(directory); //這里記得要先解鎖
delete = reader.delete(term);
reader.close(); //記得關閉,否則刪除不會被同步到索引文件中
directory.close(); //關閉目錄
}
catch (IOException ex) {
ex.PRintStackTrace();
}
return delete;
}
接下來是update的實現.目前lUCene的版本不支持直接update.必須根據你加入的索引id找出對象的記錄先delete后在add進去.
或許還有更好的方法吧,我覺得只要remove掉一個字段,在加進去這個字段應該就可以了.不過這種方法我還沒有試過.理論上應該可以.嘿嘿
假如需要轉載,請注明出處和作者。謝謝
QQ:221704
MSN:[email protected]
EMAIL:[email protected]
新聞熱點
疑難解答