如何合并来自两个不同(非分片)Lucene索引的匹配

mP.*_*mP. 5 lucene

我有两个单独的索引,包含不同的字段,它们一起包含索引的所有可搜索字段.例如,第一个索引保存所有文档的索引文本,第二个索引保存每个文档的标记.

请注意,下面的示例有点不可思议,因为我已经更改了实体的名称.Index1:text document-id

Index2:tag-name:"非常重要"的用户:"Fred的id"

我想保持索引分离,因为每当用户添加/删除标记时不断更新单个索引似乎很浪费.

到目前为止,我认为我可能需要处理两个搜索结果并手动合并(在代码中).还有其他建议吗?

我不想合并单独/分片索引.

eri*_*son 4

Lucene 有一种类型IndexReader来支持这种安排ParallelReader——.

使用起来可能有点棘手,因为记录的 Lucene 文档标识符在两个索引中必须相同。实际上,这意味着以相同的顺序将文档添加到两个索引中。我读到,在某些情况下,文档删除和索引优化可能会导致 Lucene 重新分配这些文档标识符,但我还没有尝试找出这是否属实。如果现有记录被修改,可能需要格外小心。如果只附加新记录,应该没有问题。

这种方法通常称为“垂直分区”,而不是“水平分区”或分片。