1

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

我正在运行 Solr 3.5。

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

  1. 一个基本的空间查询,它返回分数字段中两点之间的计算距离。

我的 Solr 日志中的示例查询:

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

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 查询进行排序,因此我的提升给出的分数可能对排序很有趣,但我不需要返回它。

4

2 回答 2

2

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

于 2012-03-28T20:11:40.930 回答
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”,其中包含每个条目到指定点的距离。

于 2013-03-04T02:33:11.153 回答