2014-01-28 60 views

回答

1

对于所有类型的索引(Lucene,RDBMS或其他),建议尽可能少的字段进行索引编制,因为它可以使您的索引规模缩小并减少从索引读取运行时开销。

也就是说,字段数限制受限于您的系统资源。字段通过名称(区分大小写)来标识,而不是通过任意数字标识来标识,而这些数字标识通常会成为这些系统中的限制因素。在没有像Lucene这样严格的最大字段名称长度的系统中,理论字段数量限制也很难预测。

我个人使用了200多个分析字段,超过20亿个文档没有问题。与此同时,对于一个中等规模的Azure虚拟机来说,对于相同索引的性能并不是我期望的较小索引。

1

当提及术语数时,Lucene的当前实现使用Java int来保存术语索引,这意味着任何单个索引片段中唯一术语的最大数量是术语索引间隔的约21亿倍(默认128)= 〜274亿美元。这在技术上不是索引文件格式的限制,仅仅是Lucene当前的实现。

同样,Lucene使用Java int来引用文档编号,索引文件格式使用磁盘上的Int32来存储文档编号。这是索引文件格式和当前实现的限制。最终,这些应该替换为任何UInt64值,或者更好的是没有限制的VInt值。

http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/codecs/lucene40/package-summary.html#Limitations

相关问题