我有一个项目,允许用户使用Elasticsearch搜索POI,他们可以通过许多不同的属性(包括位置)进行过滤。我想为所有过滤器添加切面,其中大多数都是分面变量,其中切面是完美的。但是,我也希望用户能够按位置/城市/都市区进行调查。每个位置目前都是一对/长对。
根据我的研究,似乎最好的方法是使用纬度/长度对的k均值聚类来获得最常见的分割位置分组。一旦我有这些分组,我想提供该区域最常识别的名称(例如,即使"布鲁克林"是集群的中心,我也想提供名称& #34;纽约市")。
(a)可以在Elasticsearch中完成地理聚类(k-means或任何其他方式)以允许按位置进行分区?如果是这样,怎么样?如果没有,可以在Postgres中完成吗? (b)如何确保我为群集返回的任何特定区域提供最广为人知的政治名称?
答案 0 :(得分:1)
将Lat / Long(或地址)作为输入,您可以使用Google Maps Geocoding API检索(和索引)特定的分层范围标签:
如果您正在构建具有缩放地图组件的Yelp或类似AirBnB的搜索界面,您可以根据某些多样性标准选择要显示的位置构面:
e.g。请求所有6个方面,但只显示具有适当选择多样性的一个(例如2-10个术语)...例如,如果您的缩放级别(和边界框)包括布鲁克林,曼哈顿和史坦顿岛,那么你将请参阅以下内容:
New York
)... 忽略,过于宽泛 Kings County, New York County, Richmond County
)... 忽略(仅适用于更常用sublocality_level_1的NYC) Brooklyn, Manhattan, Staten Island
)... 具体说明,显示此内容! New York City
)... 忽略,过于宽泛 <100s of neighborhoods>
)... 忽略,太窄