Solr 3.4查询GeoHash字段性能问题

时间:2012-03-14 01:03:08

标签: solr geospatial

我正在使用Solr 3.4,索引为20M文档,每个文档的纬度经度值。有一个预先存在的索引字段,它使用名为locLatLon的solr.LatLonType。我们试图将其性能与solr.GeoHashField进行比较。我在我们的模式中添加了一个新字段,该字段使用名为locLatLon_geohash的GeoHash字段,该字段由locLatLon字段中的copyField填充。我做了一个Solr索引的示例加载,我加载了一些文档,我能够通过两个字段进行搜索(我删除了实际的solr服务器名称)

GeoHash查询:

http://solr_server:8983/solr/select/?q=*:*&fq={!bbox%20pt=34.1,-118.3574%20sfield=locLatLon_geohash%20d=10}

地理空间查询:

http://solr_server:8983/solr/select/?q=*:*&fq={!bbox%20pt=34.1,-118.3574%20sfield=locLatLon%20d=10}

从表面上看,这两个查询应该返回非常相似的结果。地理空间查询需要62毫秒并返回179k文档。 geohash查询需要34081毫秒并返回121k文档。我并不太关心返回的结果数量(因为我担心生成这些结果所花费的时间。)

阅读GeoHash看来,这种查询Solr的方法应该非常快,但实际上非常慢。

我尝试通过添加debugQuery = on查询参数进行调试,但这并没有告诉我任何我可以使用的东西而不需要通过挖掘源代码。下面是Solr结果的片段,只有结果过滤器查询。

GeoHash Debugging Solr输出:

<arr name="parsed_filter_queries">
  <str>ConstantScore(frange(ghhsin(str(locLatLon_geohash),literal(9q5cfxwybswp))):[0 TO 10.0])</str>
</arr>

GeoSpatial Debugging Solr输出:

<arr name="parsed_filter_queries">
  <str>+locLatLon_0_coordinate:[34.01006796645071 TO 34.18993203354929] +locLatLon_1_coordinate:[-118.46600561233814 TO -118.24879438766185]</str>
</arr>

问题:在使用GeoHash类型进行Solr时,我有没有考虑过这些问题?还有什么我应该尝试调试这个吗?

1 个答案:

答案 0 :(得分:1)

阅读SOLR-2155的评论。从未应用附加的补丁,并且故障单仍未解决,但附加的zip是一个具有该功能的插件,因此无需实际修补SOLR。补丁应该允许在一个文档上索引多个点,但它似乎也实现匹配geohash的前缀以进行快速边界框搜索。