使用dismax时,Solr获得计算的距离

时间:2012-03-28 19:40:15

标签: solr distance spatial dismax

我开始认为我想做的事情是不可能的,但我想我会尝试一下。

我正在运行Solr 3.5。

我目前有两种类型的搜索:

  1. 基本空间查询,返回得分字段中两点之间的计算距离。
  2. 来自我的Solr日志的示例查询:

    ?fl=*,score&sort=score+asc&start=0&q={!func}geodist()&sfield=coordinates&pt=59.2363514,18.092783&version=2
    
    1. 一个dismax查询,允许在多个字段上进行自由文本查询。
    2. 来自Solr日志的示例查询:

      mm=1&d=100.0&sfield=coordinates&qf=field1^5.0+fields2^3.0&defType=edismax&version=2&fl=*,score&start=1&q=monkeyhopper&pt=59.2363514,18.0927830000&fq={!geofilt}}
      

      我想用dismax查询替换我的第一个查询,但我真的需要在响应中获得计算的距离。是的,我可以以编程方式计算距离,但我不想这样做,因为Solr已经为我做过了。

      我仍然希望能够“按相关性”,距离或任何其他字段对我的dismax查询进行排序,这样我的提升所给出的分数可能对排序很有意义,但我不需要将其返回。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望在Solr响应中获得函数的结果。我想是SOLR-2444问题:它允许在fl参数中包含伪字段,函数等。唯一的问题是它只在trunk上提交,所以它在当前的Solr版本中不可用,也不会在即将发布的3.6版本中。你必须等待4发布,但我认为这不会花费很多时间。也许你已经可以开始使用snapshot上一次成功的Jenkins构建。

答案 1 :(得分:1)

现在,Solr 4+中提供了伪字段,您可以使用它。

http://localhost:8983/solr/collection1/browse?q=*:*&rows=1000&wt=xml&pt=37.763649,-122.24313&sfield=store&fl=dist:geodist()

例如,此请求允许我返回一个字段“dist”,其中包含每个条目到指定点的距离。