我有一个现有的 Lucene 存储,其中包含数百万个文档,每个文档都代表一个实体的元数据。我有几个 Id 字段(Id1、Id2 .. Id5),每个文档可以有零个或多个此字段的值。该索引一次仅由这些 Id 之一查询。我已经独立地为这些字段编制了索引,并且一切正常。我最初选择使用 Lucene,因为它是迄今为止查询如此大量小文档的最快方式,我对我的决定感到满意。
但是现在我必须存储另一种类型的文档,它也代表实体的不同类型的元数据,并具有 (Id1, Id2 .. Id5) 的值,并且也将分别由其中一个 Id 查询。现有元数据和这组新数据将相互独立地存储和查询。
如何通过 Id 查询 Lucene 但仅查询一种类型的文档。我可以想到一些选择,但我想知道那些知情人士从经验中推荐什么,以保持 Lucene 的可管理性和快速性。
我能够打破与现有设置的向后兼容性。如果我来添加另一种文档类型,如果该解决方案可以重复使用,那就太好了。
最佳答案
我肯定会拒绝第三种选择,因为 type
的选择性低指数。 type
中只有 2 个不同的值每个字段都有数百万个文档。 Lucene 需要将这个巨大的发帖列表与来自 idN
的短发帖列表合并。索引,这仍然可以非常快,但确实很浪费。
前两种方式在查询阶段实际上是相同的,因为对于独立类型的文档,您有不同的术语和发布列表。不同之处在于索引阶段。管理多个独立的索引需要更多的协调,并且会使代码变得更加困难。然而,如果您计划在不同的上下文中使用索引,这可能是一个好主意。例如:
否则,我会选择第一个选项,因为它更简单和易于管理。
关于lucene - 如何在 Lucene 中存储多种不同类型的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783552/