Apache Solr使用哪种算法进行排序?

时间:2016-05-20 05:45:54

标签: sorting solr lucene

我想使用Solr对1000万行数据进行排序,然后使用limit来获取其中的一部分。就像这样:

select * from table sort by click limit 0,10

Solr使用哪种排序算法?快速排序?泡泡排序?还是其他一些?

1 个答案:

答案 0 :(得分:5)

您可以放心地假设,不需要对数百万个值进行排序的系统将使用冒号排序或任何其他O(n ^ 2)算法作为其基础。

Lucene(现在使用DocValues)主要使用Timsort的实现,改编自同一算法的python实现。这与最近版本的JDK中使用的算法相同。

  

Timsort是一种混合稳定排序算法,源自合并排序和插入   排序,旨在很好地处理各种现实世界的数据。

currently a discussion whether Lucene应该切换到Timsort的JDK版本,而不是保留自己的实现。

Lucene拥有is available in core/src/java/org/apache/lucene/util的不同排序算法的来源。