2017-09-02 54 views
-1

我有一个搜索索引的办公室有多个位置。我想通过地址过滤这些办公室并在地图上显示它们。在搜索特定地址时,某些办公室在所需地点以及不相关的地点都有地点。例如,如果我搜索纽约,指数返回两家公司谷歌地图不包括特定范围内的位置

company_a.locations = [New York, San Francisco] 
company_b.locations = [New York] 

的问题是,我现在所有的3个地点显示引脚,包括旧金山,即使我真正关心的是纽约。如果我在纽约搜索特定的邮政编码并且收到了一些实际位于新泽西州的位置,则这是正确的,因此它对查询非常具体。

我可以实现什么逻辑来理解任意位置与搜索结果无关?

我正在尽我所能来定义问题,并意识到它很难定义,所以我将不胜感激任何正确的方向。如果有帮助,我使用algolia和谷歌地图。

回答

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" }

+0

我每记录一个位置去,并认为这是最易维护。感谢您的建议。 – user2954587