Solr分面搜索性能建议

rre*_*979 5 solr faceted-search

我们有一个包含86,315,770个文档的solr实例.它使用高达4GB的内存,我们需要它在名为内容的标记化字段上进行分面.磁盘上的索引大小为23GB.

我们为什么要面对一个象征化的领域?因为我们想查询该字段上最常用的"n"个术语.问题是执行此类查询需要花费太长时间.有没有什么方法可以改善这样做的时间?有什么建议?

提前致谢.

jpo*_*ntz 2

由于 Solr 在内存数据结构上计算分面,因此分面计算可能受 CPU 限制。计算构面的代码已经高度优化(UnInvertedFieldgetCounts中用于多值字段的方法)。

一种想法是并行计算。也许最简单的方法是将集合分成几个分片,如单台机器上的多个 Solr 分片是否可以提高性能中所述?

否则,如果您的术语词典足够小并且查询可以采用有限数量的形式,您可以设置一个不同的系统来维护每个(术语,查询)对的计数矩阵。例如,如果您只允许术语查询,这意味着您应该维护每对术语的计数。请注意,这将需要大量磁盘空间,具体取决于术语和查询的总数。如果您不需要精确的计数,也许最简单的方法是在批处理过程中计算这些计数。否则,保持计数与 Solr 同步可能(可能,但是)有点棘手。