我有一个拥有数百万个文档的现有Lucene存储,每个文档都代表一个实体的元数据。我有几个Id字段(Id1,Id2 .. Id5),每个文档可以具有零个或多个此字段的值。索引一次只能由其中一个Ids查询。我已经独立编制了这些领域的索引,这一切都很好。我最初选择使用Lucene,因为它是迄今为止查询如此大量小文档的最快方式,我对我的决定感到满意。如何在Lucene中存储多个不同类型的文档
但是现在我必须存储另一种类型的文档,这些文档也代表实体的不同类型的元数据,并且具有(Id1,Id2,Id5)的值,并且这些文档还将分别由这些Ids中的一个查询。现有的元数据和这组新数据将彼此独立存储和查询。
如何通过Id查询Lucene,但仅查询一种类型的文档。我可以考虑一些选项,但我想知道那些知道的人从经验中推荐的内容,以便让Lucene保持可管理性和快速性。
- 使用单独的Lucene索引。这将避免这个问题,因为文档类型是正交的。还有能够分别读取和写入索引的好处。
- 将新文档的字段Id1..Idn重命名为XId1 ... XIdn。这样,一种类型的文档就不会与另一种类型的文档具有相同的字段名称。这似乎更像是一种避免问题的解决方法,而不是实际的解决方案。
- 添加一个数字字段“Type”并将索引号更改为(Type,Idx)。这种方法看起来很浪费,因为每个索引都必须包含该类型。
我能够打破向后兼容性与我现有的设置。如果我添加其他文档类型,如果解决方案可以重复使用,那将是非常好的。
我会做1.但更多只是意见 – Paparazzi