【问题标题】:How to sort this Solr query by distance?如何按距离对这个 Solr 查询进行排序?
【发布时间】:2017-03-16 11:56:42
【问题描述】:

我正在查询这样的结果:

?q=*&wt=json&rows=1000&fq={!geofilt%20pt=36.722484,-4.371908%20sfield=location%20d=50}

这是使用 geofilt 函数查找给定点 50 公里内的所有结果。但是结果以奇怪的顺序返回。我想通过接近给定点对它们进行排序,升序。如何将其添加到上述查询中?

【问题讨论】:

    标签: search indexing solr lucene


    【解决方案1】:

    我敢打赌,您宁愿需要应用此处描述的其他排序参数:Spatial Search

    所以在你的情况下它看起来像:

    ?q=*&wt=json&rows=1000&fq={!geofilt%20pt=36.722484,-4.371908%20sfield=location%20d=50}&sort=geodist()+asc
    

    【讨论】:

    • 否,返回此错误:"error":{"msg":"sort param could not be parsed as a query, and is not a field that exists in the index: geodist()","code":400}
    • 您使用的是哪个 Solr 版本?
    • 我们使用的是 5.4
    • 我认为可能是使用全局参数而不是本地参数,例如:&fq={!geofilt}&pt=36.722484,-4.371908&sfield=location&d=50&sort=geodist()+asc。你能检查一下吗?
    • 嗯,这不会返回错误,但该查询中的 asc / dsc 返回完全相同的顺序。所以它似乎没有排序。
    【解决方案2】:

    如果您获得的值不是字段值,而是计算结果(即动态生成的值,例如点之间的距离),那么您可以对函数的输出进行排序。看看这个链接:

    https://wiki.apache.org/solr/FunctionQuery#Sort_By_Function

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多