2013-03-25 43 views
0

我有一個看起來像這樣的Solr文件:是否可以過濾solr Document中返回的字段?

<doc> 
    <str name="some_attribute">some_attribute_value</str> 
    <!-- ... --> 
    <arr name="locationCoordinates"> 
     <str>48.117,11.539</str> 
     <str>23.423,11.342</str> 
     <!-- ... --> 
    </arr> 
</doc> 

我的問題是它是否可以過濾文檔的返回的字段只返回特定的值,例如只返回locationCoordinates有不到50另一點的公里範圍內,並讓其他人離開。

I.e.返回上面的文件,但只有第一個locationCoordinates

我真的不知道這是否應該可能在Solr(因爲面向文檔的結構),但我至少可以問:)。

也許我也應該闡述我想要使用此功能,並替代我「發現」這一方式:

  1. 更改文檔設計打造每個位置(臨一個文件:作品,缺點:需要檢查客戶端上的重複數據,Solr數據庫中的重複數據堆)

  2. 讓它具有此結構(臨:工作,不必更改當前結構,缺點:我有自己排列正確的座標(在客戶端),因此遇到距離計算問題(我已經過濾瞭如果我計算客戶端的距離很糟糕,我可能會丟失一些數據)

  3. 爲Solr上的位置(以及它們的名稱等)創建一個新的Document「type」並使用類似外鍵的結構將位置添加到文章中,爲了計算距離,我必須先查詢可到達的位置,然後加入文章(Pro:所有工作都在Solr端,Cons :我需要的Solr,加入爲)

+0

答案很可能在這個問題上找到: http://stackoverflow.com/questions/14015696/limiting-filtering-multivalue-fields-in-solr 但我怎麼能實現上述的行爲? – 2013-03-25 10:22:58

回答

0
  1. 更改文檔設計創建每個位置的一個文件(鐠○:有效,缺點:需要檢查客戶端上的重複,在Solr的數據庫 複製數據的堆)

如果這是你唯一關心的,也許你可以考慮做locationCoordinates爲您的每個文檔的unique_key

通過這樣做,你是不允許在你的索引中重複locationCoordinates,從而消除在客戶端檢查重複的需要。

+0

與此我只能在每個locationCoordinate的物品上存儲。無論如何感謝您的努力。我想我已經解決了我自己的問題。 – 2013-03-25 11:17:42

+0

如果解決了,請隨時分享您的答案。 – Mavellin 2013-03-25 11:49:49

+0

是的,我肯定會,但是現在我正在重新考慮它。 – 2013-03-25 12:01:16

相關問題