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使用哪种排序算法?快速排序?泡泡排序?还是其他一些?
您可以放心地假设,不需要对数百万个值进行排序的系统将使用冒号排序或任何其他以O(n ^ 2)为基础的算法.
Lucene的(现在DocValues)主要使用的一种实现Timsort,改编自Python实现相同的算法.这与最近版本的JDK中使用的算法相同.
Timsort是一种混合稳定排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据.
目前正在讨论Lucene是否应该切换到Timsort的JDK版本而不是保留自己的实现.
Lucene提供的不同排序算法的源代码可在core/src/java/org/apache/lucene/util中找到.