首页 > 解决方案 > Lucene 从索引中的文档更新字段,没有松散的信息

问题描述

我喜欢从我的索引中的文档中更新一个字段。一个例子,我的文件:

id: 123 (For term)
xNum: 4568-456843
content (Field.Store.NO): my text from the file

现在我喜欢只更新 xNum 字段(没有新内容),而不会丢失该文档中的索引词。内容来自文件,而不是数据库。如果有可能做到这一点?不知何故?

我使用 Lucene Core V.8.3

标签: javalucene

解决方案


实际上 Lucene 索引字段没有更新。即使您运行更新功能,它也会删除索引记录然后添加新记录。当您不加载以前的记录时,您只会将 xNum: 4568-456843 值添加到该记录。

int id = 123 ;
String idSearch = "Id";

Query searchQuery = new TermQuery(new Term(idSearch , String.valueOf(id)))

TopDocs result = searcher.search(searchQuery ,1);

for (ScoreDoc docTemp : result.scoreDocs) {
   Document _doc = searcher.doc(docTemp.doc);
   YourObject obj = fillFields(doc);
}
obj.xNum = 4568-456843;

Document updateDoc = createDoc(obj);


indexWriter.updateDocument(new Term(idSearch, String.valueOf(id)), updateDoc);

您可以尝试转换结果字段,然后更新您想要的属性并更新它,如示例中所示


推荐阅读