Solr多核加入空间搜索

时间:2018-08-21 05:49:05

标签: solr

我有两个核心客户和位置。以下是客户核心的示例数据

[{"Name":abc,"Id":123},{"Name":xyz,"Id"354}]

以下是位置核心的示例数据

[{"locationid":9834,"customerId":123,"lat_long_loc_s_i":"53.258496, -0.757421","active":True},
 {"locationid":9834,"customerId":354,"lat_long_loc_s_i":"53.258496, -0.757421","active":True},....
]

我想搜索居住在10英里半径范围内且位置活跃的客户。

以下查询将为我提供具有活跃位置的客户列表

http://xx.xx.xx.xx:8983/solr/customer/select?q=*:*&fq={!join%20from=customerId%20to=Id%20fromIndex=location}active:True

如何在具有活动过滤器的位置核心上添加空间搜索

d=10&indent=on&pt=51.480401,%20-0.110252&sfield=lat_long_loc_s_i

如果我添加“&d = 10 ...”,它将在客户核心而非位置核心上应用查询。

(Solr版本7.2)

1 个答案:

答案 0 :(得分:0)

如果可以解决,请尝试以下操作

我只是使用* _p动态字段进行定位,因此修改了提供的数据。

位置数据

enter image description here

客户数据

enter image description here

已加入数据以过滤d在1000以内的记录

enter image description here

查询:

http://localhost:8983/solr/customer/select?q=*:*&fq={!join%20from=customerId%20to=Id%20fromIndex=location}active:true%20AND%20{!geofilt%20sfield=lat_long_loc_p}%20AND%20locationid:9836&d=800&indent=on&pt=52,0.5&sfield=lat_long_loc_p&debug=query