2012-03-14 26 views
3

我使用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?還有什麼我應該嘗試調試嗎?

回答

1

閱讀評論至SOLR-2155。附加的補丁程序從未應用,並且該故障單仍然未解決,但附加的zip是一個具有該功能的插件,因此不需要實際修補SOLR。該補丁應該允許多個點在一個文檔上進行索引,但它似乎也實現了匹配geohash的前綴以進行快速邊界框搜索。