【发布时间】:2012-03-30 11:23:38
【问题描述】:
我正在使用具有 20M 文档索引的 Solr 3.4,每个文档都有纬度经度点。有一个预先存在的索引字段使用名为 locLatLon 的 solr.LatLonType。我们正在尝试将其性能与 solr.GeoHashField 进行比较。我在我们的模式中添加了一个新字段,该字段使用名为 locLatLon_geohash 的 GeoHash 字段,该字段由 locLatLon 字段中的 copyField 填充。我做了一个 Solr 索引的示例加载,我在其中加载了一些文档,并且能够按两个字段进行搜索(我删除了实际的 solr 服务器名称)
地理哈希查询:
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 查询耗时 34081ms,返回 121k 个文档。我不太关心返回的结果数量(还),因为我关心生成这些结果所花费的时间。
阅读 GeoHash 似乎这种查询 Solr 的方法应该很快,但实际上很慢。
我尝试通过添加 debugQuery=on 查询参数进行调试,但这并不能告诉我在不借助挖掘源代码的情况下可以使用的任何内容。下面是 Solr 结果的 sn-ps,仅包含结果过滤器查询。
GeoHash 调试 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>
问题:在为 Solr 使用 GeoHash 类型时,有什么我没有考虑到的吗?还有什么我应该尝试调试的吗?
【问题讨论】:
标签: solr geospatial