我有两个核心客户和位置。以下是客户核心的示例数据
[{"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)
答案 0 :(得分:0)
如果可以解决,请尝试以下操作
我只是使用* _p动态字段进行定位,因此修改了提供的数据。
位置数据
客户数据
已加入数据以过滤d在1000以内的记录
查询:
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