Java Lucene能否将任意对象附加(或至少跟踪)到文档?

Java Lucene能否将任意对象附加(或至少跟踪)到文档?,java,lucene,Java,Lucene,我正在密切关注Lucene 3.6的应用程序 我能够在文档对象上创建和执行搜索,但我想找回我用来创建文档的原始对象。不幸的是,Lucene似乎正在序列化/反序列化文档,因此我无法在它们之间创建查找映射 如何在Lucene的文档s和我的对象s之间保持关系?有没有一种Lucene首选的方法可以做到这一点? 我应该注意到教程对我来说不是现成的,我必须在创建/附加文档后添加对IndexWriter.commit()的调用,并且我还必须调用IndexWriterConfig.setMaxBufferedD

我正在密切关注Lucene 3.6的应用程序

我能够在
文档
对象上创建和执行搜索,但我想找回我用来创建
文档
的原始对象。不幸的是,Lucene似乎正在序列化/反序列化
文档,因此我无法在它们之间创建查找映射

如何在Lucene的
文档
s和我的
对象
s之间保持关系?有没有一种Lucene首选的方法可以做到这一点?


我应该注意到教程对我来说不是现成的,我必须在创建/附加
文档后添加对
IndexWriter.commit()
的调用,并且我还必须调用
IndexWriterConfig.setMaxBufferedDocs()
IndexWriterConfig.setRAMBufferSizeMB()
使用大数字停止Lucene查看硬盘。

首先,您需要对原始对象的唯一引用。如果对象是数据库中的行,那么可以使用主键,假设它是唯一的
ID

其次,在创建可搜索的
文档时,只需添加如下字段

doc.add(new Field("id", object.getId().toString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
以后可以从找到的文档中检索此字段,并根据id检索原始文档(数据库条目)


如果您可能有不同的文档类型,例如数据库条目和PDF,只需以相同的方式保存文档类型,即可以不同的方式处理不同的类型。

您需要以某种方式唯一地标记可搜索对象,例如通过id,然后再引用该id。只需将该id保存为您的
文档
s中的非索引id即可。一个
字段
是否适用于此?是的。在我的一个应用程序中,我添加了一个id字段作为
doc.add(新字段(“id”,object.getId().toString(),field.Store.YES,field.Index.NOT_analysis))我实际上选择了
字段.索引.否
;-)是否要将您的评论升级为解决方案?