我有一个有多个地点的办事处的搜索索引。我想通过地址过滤这些办公室并将它们显示在地图上。在搜索特定地址时,某些办公室在所需位置和不相关的位置都有位置。例如,如果我搜索纽约,该索引将返回两家公司
company_a.locations = [New York, San Francisco]
company_b.locations = [New York]
问题在于我现在将显示所有3个位置的针脚,包括旧金山,尽管我真正关心的是纽约。如果我在纽约搜索特定的邮政编码并且我收到了一些实际上在新泽西州的位置,那么这是真的,所以它对查询非常具体。
我可以实现什么逻辑来理解任意位置与搜索结果无关?
我正在尽我所能来定义问题,并意识到它很难定义,所以我会感谢任何朝着正确方向的推动。如果有帮助,我使用的是algolia和谷歌地图。
答案 0 :(得分:1)
您可以想象设置您的记录有点不同,以获得有关每个位置的更多信息:
{
"name": "company_a",
"_geoloc": [
{
"city": "NY",
"lat": 40.7128,
"lng": 74.0059
},
{
"city": "SF",
"lat": 37.7749,
"lng": 122.4194
}
]
},
{
"name": "company_b",
"_geoloc": [
{
"city": "NY",
"lat": 40.7128,
"lng": 74.0059
}
]
}
_geoloc
字段是Algolia geosearch功能使用的字段(可能对您的用例有用)。
如果您使用内置geosearch,则无需过滤前端的记录以删除备选方案。如果您使用常规过滤器,则必须检查Algolia的结果并删除位于不同城市的替代品。
为了完整起见,您还可以简单地复制您的记录,以便每个记录只有一个位置:
{
"name": "company_a",
"location": "SF"
},
{
"name": "company_a",
"location": "NY"
}