2013-03-08 51 views
2

我有以下字段定義在schema.xml中(Solr的4.1):是否有可能使用多值字段中geodist

<field name="locationCoordinates" type="location_rpt" indexed="true" stored="true" multiValued="true" /> 

現在我想基本上做到以下查詢:

篩選座標位於地理點的給定距離內(此部分已經工作)並將距離返回到最近的點。

還是在現實生活中:

我們有文章。每篇文章在多個商店都有售(只保存爲地理位置)(N:N,但我們只有用Solr建模的文章)。現在我想查詢在給定點範圍內的文章,並且它們也返回到該點的距離。

我該如何使用Solr查詢來完成該操作?

+0

還是我必須規範文檔? – 2013-03-09 19:56:58

回答

2

如果我正確理解你,你需要的是地理上的排序,對吧?

爲了達到同樣的效果,你必須在Lucene中使用自定義排序功能。

如果按照score,id,field進行排序是不夠的,Lucene允許您通過提供您自己的FieldComparatorSource抽象基類的子類來實現自定義排序機制。

步驟:

1)分類對象實例化期間接受FieldComparatorSource類型實例。

2)擴展FieldComparatorSource

3)您對加載使用FieldCache的FieldComparatorSource內setNextReader()

4座標)對於每一個文檔,你可以從你的起點和收益計算距離其中一個{-1,0,1}

實際上,整個例子在下面的鏈接中給出。但是你必須註冊一個免費試用版。

Link to Custom sort in the book Lucene in Action 2

+0

是的,我確實想做地理分類。我明天會試試:) – 2013-03-10 20:07:02

+0

很高興我說得對。然後我的鏈接應該解決你的問題。把它作爲插件併入Solr也不會麻煩你。 – phani 2013-03-10 20:13:23

+0

有沒有更具體的類,我可以擴展以便與location_rpt一起使用它? – 2013-03-11 07:54:46

相關問題