我想使用Solr对1000万行数据进行排序,然后使用limit来获取其中的一部分。就像这样:
select * from table sort by click limit 0,10
Solr使用哪种排序算法?快速排序?泡泡排序?还是其他一些?
答案 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的不同排序算法的来源。