java - Lucene 从索引中的文档更新字段,没有松散的信息
问题描述
我喜欢从我的索引中的文档中更新一个字段。一个例子,我的文件:
id: 123 (For term)
xNum: 4568-456843
content (Field.Store.NO): my text from the file
现在我喜欢只更新 xNum 字段(没有新内容),而不会丢失该文档中的索引词。内容来自文件,而不是数据库。如果有可能做到这一点?不知何故?
我使用 Lucene Core V.8.3
解决方案
实际上 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);
您可以尝试转换结果字段,然后更新您想要的属性并更新它,如示例中所示
推荐阅读
- google-api - 如何访问 Google 开发源示例页面?
- python - 了解 Tkinter 中的帧类
- javascript - 将数据传递给子抛出道具数据重复时做出反应
- javascript - Konva 可以动态更改 Konva 的文本
- wpf - 当我有 WPF 应用程序时,我会如何处理 Azure 版本?
- javascript - 根据用户上一页的输入更改网页颜色
- python - 根据python中的值对文件进行分箱
- javascript - 从 jQuery $.post() 方法重新运行响应函数,直到响应等于值
- python - 数据框中的文本操作:单词提取
- svg - 为 Inkscape 1.0 导出“.pdf_tex”