在lucene中创建索引分区的策略

时间:2014-03-28 08:56:06

标签: lucene

在lucene中加快搜索的最佳索引分区策略是什么?

更少的索引分区是否更好,并且导致搜索速度比许多索引分区更快?

1 个答案:

答案 0 :(得分:3)

首先,我认为强调分区分片之间的区别非常重要。

据我了解,Lucene中的分区意味着您有多个索引(单独的IndexReader s / IndexWriter s / Directory个实例)在同一个JVM下运行。

Sharding 意味着上面提到的所有内容 plus 单独的JVM(如果你是磁盘绑定的话,将索引放在不同的磁盘上也是有意义的。)

无论如何,对此没有简单的答案,但这些是一些一般性的观点:

<强>赞成

  • 更快的索引(可以并行完成) - 分片和分区
  • 更快的搜索(查询计算可以并行完成) - 用于分片和分区
  • 较小的索引通常意味着较少的GC开销和更高的可预测性 - 仅分片
  • 较小的索引会增加操作系统缓存中数据拟合的几率 - 仅限分片

更多积分here

<强>缺点

  • 增加了复杂性 - 两者
  • 增加了维护费用 - 仅限分片
  • 我不认为{/ 3}}可以跨分片

上面说过,如果你在努力提高性能或计划未来大量的数据涌入,我只推荐分片。如果数据在逻辑上是分开的,那么分区通常是一个好主意;你可以用它作为分片的第一步(如果你这么做的话)。