使用LUCENE3.0更新索引时,发现原索引不删除,更新后索引显示两条,解决过程记录一下:
1、将IndexWriter writer = new IndexWriter(FSDirectory.open(indexPath), analyzer, false, IndexWriter.MaxFieldLength.LIMITED);
改为:IndexWriter writer = new IndexWriter(FSDirectory.open(indexPath), analyzer,true, IndexWriter.MaxFieldLength.LIMITED);
则每次更新后都将以前的索引删除,重新生成了一个只有当前记录的索引文件。
2、网上一朋友说需要将索引中类似主键的那个field设置为Field.Index.ANALYZED,经测试未果。
3、我原来用的url字段作为主键,即:
writer.updateDocument(new Term("url", String.valueOf(field.get("url"))), doc);
怀疑是其问题,改为title:
writer.updateDocument(new Term("title", String.valueOf(field.get("title"))), doc);
无效,改为id:
writer.updateDocument(new Term("id", String.valueOf(field.get("id"))), doc);
搞定!!!
之前加索引时未加入id字段,本来想省事,用url当主键凑合用,结果出现这个问题,似乎是由于url中有特殊字符、title中含有中文,所以无效,但未查相关文档,不是很确定。
软件产品网(http://www.soft78.com)是为广大软件企业提供的一个软件产品、解决方案与成功案例的网络展示、宣传、推广平台,是为软件需求企业或个人提供的一个综合性的软件选型平台。
软件产品网提供国内最全的软件产品、解决方案信息,如果您的产品还没有加入到我们的产品库中,请立即与我们联系。
软件产品网为您提供专业、客观的软件评测信息,为您购买软件提供最专业的参考。