我使用Solr 3.4,索引爲20M文檔,每個文檔都有緯度經度點。有一個預先存在的使用名爲locLatLon的solr.LatLonType的索引字段。我們試圖比較這個與solr.GeoHashField的性能。我在我們的模式中添加了一個新字段,該字段使用名爲locLatLon_geohash的GeoHash字段,該字段由locLatLon字段中的copyField填充。我做了,我裝了幾個文件Solr的指數的樣本負載,我能夠通過這兩個字段進行搜索(我刪除了實際Solr的服務器名稱)Solr 3.4查詢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}
在這兩個查詢應返回的結果非常相似的表面。地理空間查詢需要62ms並返回179k文檔。 geohash查詢需要34081ms並返回121k文檔。我並不太在意返回結果的數量(還),因爲我擔心生成這些結果所花費的時間。
閱讀GeoHash看起來這種查詢Solr的方法應該非常快,但實際上它非常慢。
我試着通過添加debugQuery = on查詢參數來進行調試,但是沒有告訴我任何我可以使用的東西,而無需通過源代碼進行挖掘。以下是Solr結果的片段,其中只是最終的過濾器查詢。
地理散列調試Solr的輸出:
<arr name="parsed_filter_queries">
<str>ConstantScore(frange(ghhsin(str(locLatLon_geohash),literal(9q5cfxwybswp))):[0 TO 10.0])</str>
</arr>
地理空間調試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>
問題(S):有什麼是我沒有考慮到當使用GeoHash類型的Solr?還有什麼我應該嘗試調試嗎?