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

zaw*_*wdd 1 sorting lucene solr

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

select * from table sort by click limit 0,10
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*ndh 5

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

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

Timsort是一种混合稳定排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据.

目前正在讨论Lucene是否应该切换到Timsort的JDK版本而不是保留自己的实现.

Lucene提供的不同排序算法的源代码可在core/src/java/org/apache/lucene/util中找到.