Lucene可以将任意对象附加(或至少跟踪)到文档吗?

时间:2012-08-09 13:12:21

标签: java lucene

我正在密切关注Lucene 3.6的Lucene Tutorial

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

如何保持Lucene的DocumentObject之间的关系?是否有首选的Lucene方式?

我应该注意,教程对我来说没有开箱即用,我必须在创建/附加IndexWriter.commit()之后添加对Document的调用,我也有拨打大号IndexWriterConfig.setMaxBufferedDocs()IndexWriterConfig.setRAMBufferSizeMB()来阻止Lucene查看硬盘。

1 个答案:

答案 0 :(得分:3)

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

其次,在创建可搜索的Document时,只需添加一个类似

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

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

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