1

我正在密切关注Lucene 3.6教程。

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

如何保持 Lucene 的Documents 和我Object的 s 之间的关系?是否有首选的 Lucene 方式来执行此操作?

我应该注意,本教程对我来说不是开箱即用的,我必须IndexWriter.commit()在创建/附加Documents 后添加一个调用,我还必须调用IndexWriterConfig.setMaxBufferedDocs()IndexWriterConfig.setRAMBufferSizeMB()使用大数字来阻止 Lucene 在硬盘上查找.

4

1 回答 1

3

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

其次,在创建 searchable 时Document,只需添加一个字段,如

doc.add(new Field("id", object.getId().toString(), Field.Store.YES, Field.Index.NOT_ANALYZED));

您可以稍后从找到的文档中检索此字段并根据 id 检索原始文档(数据库条目)。

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

于 2012-08-09T14:25:17.783 回答