2013-04-04 66 views
3

我努力在Solr的4閱讀和理解上的空間搜索該文檔:在Solr 4中按距離排序結果的理想方法是什麼?

http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4

,但我有一個很難找到一個簡單的答案:什麼是排序結果的理想方法通過在Solr 4中的距離?

我在我的文檔集中提供了兩個位置字段:

geo被定義爲location_rpt場:

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" 
    geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" /> 

而且ll被定義爲一個位置字段:

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

我在上面引用的文檔中看到的示例引用了相交的圓以及各種各樣的東西如果我所感興趣的是在我的查詢中提供一個起始點(lat/lng),並獲得按距離排序的結果列表,那麼似乎沒有必要。

UPDATE:接受的答案提供了Solr中3和4大衛Smiley的comment on that answer工作提供了做一個排序的嚴格的「Solr 4」的方式,對於那些有興趣的一個很好的解決方案。

回答

5

根據第4章 - 查詢Solr的 - 爲了通過對您已在架構中定義的ll場距離排序的Apache Solr實現4食譜排序的距離結果從一個點,你可以使用geodist()功能如下:

假設您站在北極(0.0,0.0),並且希望讓公司排序的方式使得距離您較近的公司首先進入結果列表。您的查詢將如下所示:

http://localhost:8983/solr/select?q=company&sort=geodist(ll,0.0,0.0)+asc 
+0

謝謝@PaigeCook。我的印象是,如果做事情,我的「ll」字段更像Solr3的方式,而我的「地理」字段是Solr4做事的方式。我們仍然應該在Solr4中使用geodist嗎?文檔在討論舊的和新的空間特徵時會變得混亂。 – 2013-04-05 06:23:14

+3

Solr 3空間域支持距離排序比Solr 4更好,所以Paige在這裏對於典型需求有正確的答案。但是,如果Solr 3無法處理該文件,則每個文檔的點數可變,您需要* Solr 4 one。 Solr 4純粹排序(不過濾)的方式是&sort = query($ sortsq)asc&sortsq = {! score = distance filter = false} geo:「Intersects(Circle(54.729696,-98.525391 d = 180))」請注意filter = false local-param,d = 180來有效地表示整個世界。 – 2013-04-05 13:47:10

+0

謝謝@DavidSmiley。我將在原始問題中引用您的評論以突出顯示此信息。 – 2013-04-08 18:00:29