Java Lucene的hits的对象能不能里面删除相同document的记录信息啊

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:09:25
如果能 要怎么删呢?

用IndexReader的delete方法就可以了

public void deleteRecord(String conditionStr,boolean isParser,String indexFolder) throws Exception{
IndexQuery query = new IndexQuery(this.indexFolder);
query.setIsParser(isParser);
Hits hits = query.query(conditionStr);
IndexReader indexReader = IndexReader.open(indexFolder);

if (hits != null){
//你可以从1开始循环,这样就只留一个了
for(int i = 0;i < hits.length();i++){
Document docu = hits.doc(i);
indexReader.delete(new Term("id",docu.get("id")));
}
}
indexReader.close();
this.indexWriter.optimize();
}

不过建议用apache的solr
基于Lucene 2.4开发
封装的很好,其中就有一个指定字段唯一性的设置

Lucene....用的头疼