4

我们正在重新实现一个搜索,其中包括需要在地图上聚集的位置。我一直在寻找 SOLR 中的实现,但没有运气。

当前使用地图聚类的搜索位于http://www.uship.com/find

有没有人见过类似的或有关于如何最好地做到这一点的想法?

问候,尼克

4

2 回答 2

6

如果要求对相当少量的点进行聚类,可能少于 1000 个,则不需要涉及 Solr。抓住点并使用HeatmapJS之类的东西绘制它们。

我认为要求是集群所有搜索结果可能是数千甚至数百万个文档。我建议首先在搜索区域的网格上生成密度热图。您可以通过在每个长度(例如 D2RY、D2R、D2、D)索引以 geohash 形式编码的每个点来做到这一点。但是在长度之前加上长度:4_D2RY、3_D2R、2_D2、1_D。这些小字符串进入 Solr 中的多值“字符串”类型字段,然后您将对其进行分面。分面时,您将提出合适的网格分辨率(例如 goehash 前缀长度),然后将其用作前缀查询,例如 facet.prefix=4_ 您可以使用 LatLonType 字段单独索引该点并执行标准边界框在那里查询。此时,你的分面搜索结果将给你的信息填入一个数字网格。——你可以即时生成这样的热图。不过,它将使用相当数量的 RAM,因为这是一个多值字段的分面,该字段将具有大量值。这是我想要添加到新的 Lucene 空间模块(或者可能在 Solr 层)中的东西,它不需要额外的内存并使其变得简单。它不会出现在 Solr 4.0 中,但可能会出现在 4.1 中。

在这个阶段,也许热图就可以了。但是,正如您的问题所述,您可能希望在此之上应用聚类。有人向我介绍了一些可以应用于热图的有趣的地理聚类算法。

于 2012-07-04T02:35:53.727 回答
1

不知道你有没有搜索过 lucidworks,但是那里有很多有趣的资源:

使用多边形搜索:Solr 地理空间搜索的另一种方法

浏览这些:
http ://www.lucidimagination.com/search/?q=geospatial#%2Fn

已经在 Solr 中实现:
http ://wiki.apache.org/solr/SpatialSearch/ (这种方法有什么问题?)
http://wiki.apache.org/solr/SpatialSearchDev
https://issues.apache.org/吉拉/浏览/SOLR-3304

于 2012-07-04T07:27:50.730 回答