如何控制结果的顺序?Cloudant中的Lucene范围查询

如何控制结果的顺序?Cloudant中的Lucene范围查询,lucene,cloudant,Lucene,Cloudant,我有一个简单的索引,它以1000的增量输出从1000到12000的分数。例如,我想得到从低分到高分的一系列结果 q=score:[1000 TO 3000] 但是,它总是返回一个从3000开始的匹配列表,并且根据匹配的限制和数量,它可能永远不会返回任何1000个匹配,即使它们存在。我尝试使用sort:+-和grouping,但似乎对返回的结果没有任何影响 所以,;如何控制返回结果的顺序 理想情况下,我希望从范围中选择匹配项,但我假设这是不可能的,因为查询只是从顶部开始填充结果 作为参考,索引如

我有一个简单的索引,它以1000的增量输出从1000到12000的分数。例如,我想得到从低分到高分的一系列结果

q=score:[1000 TO 3000]
但是,它总是返回一个从3000开始的匹配列表,并且根据匹配的限制和数量,它可能永远不会返回任何1000个匹配,即使它们存在。我尝试使用sort:+-和grouping,但似乎对返回的结果没有任何影响

所以,;如何控制返回结果的顺序

理想情况下,我希望从范围中选择匹配项,但我假设这是不可能的,因为查询只是从顶部开始填充结果

作为参考,索引如下所示

function(doc) {
    var score = doc.score;
    index("score", score, {
        "store": "yes"
    });
...

我无法对此发表评论,因此在此处发布答案:


基于lucene查询上的cloudant文档,没有一种对查询结果进行排序的方法。这里给出的排序选项用于分组。即使对于分组结果,我也从未见过排序工作。在任何情况下,都应该对组本身的顺序进行排序。不是里面的数据。

@pal2ie你是对的,Cloudant已经回来给我确认了。在某种程度上,这是有道理的,但我希望我至少能控制方向lo->hi,hi->lo。为了在整个范围内获得更好的分布,我实现的解决方案是不使用范围查询,而是使用范围查询

在简单、离散、高斯分布的范围内,为每个分数创建所需结果的数量分布 对范围内的每个分数执行单独查询,并将限制设置为该分数的所需结果数 从最小到最大执行步骤2,填写结果 它不是最有效的,因为它意味着到服务器的多次往返,但至少它让我能够完全控制范围内的分发

顺便说一句,我认为我不能使用boost;唯一使一个指数比另一个指数更高的是分数,而不是别的