2013-06-18 85 views
2

我希望得到一些關於設計Solr索引的最佳方法,其中每個文檔都有多個標記以及多個經緯度對。示例文檔的Solr中的一對多地理空間搜索索引設計

JSON表示:

Document { 
    id: 123, 
    name: "Sample Doc", 
    tags: [ 
     {tag:"example1", weight:0.5}, 
     {tag:"example2", weight:1.0}, 
     {tag:"example3", weight:1.5} 
    ], 
    locations: [ 
     {lat:1.234, lng:5.678}, 
     {lat:9.876, lng:5.432} 
    ] 
} 

標籤需要在索引時間要分配的各種權重(權重不查詢之間改變)。根據索引進行搜索包括文本搜索與名稱以及距離lat/lng對特定距離內的所有文檔的標籤。例如,在9.876/5.432的5000米範圍內搜索:「Sample example3」。

在這樣的搜索中,具有更多標籤匹配和匹配標題的文檔應該排名更高(不確定Solr是否默認),同時仍考慮標籤權重(這可能導致某個標籤可能導致文檔由於其重量而在搜索中排名非常高)。

我已經使用Solr來執行全文搜索,並且我已經玩過了它的地理空間特徵。我來自獅身人面像的背景,但我認爲Solr是我大多數需求的更強大的產品。我只需要一些幫助來設計一個可以高效地完成全文+加權+地理空間的索引。任何意見是極大的讚賞!

+0

你有特別的問題嗎?或者只是尋求關於如何實施您的要求的一般建議? – femtoRgon

+0

Moreso概念性建議,或基於我的JSON示例中的數據的示例實現。 – Anton

回答

1

地理空間多值數據可以通過Solr的開箱即用模式中的location_rpt輕鬆處理。

這裏比較棘手的部分是加權標籤。作爲第一次剪輯,我將索引3個字段,tags05 tags10個tags15,每個分別具有3個獨立的查詢時間提升(通過edismax的qf參數)分別爲0.5,1.0和1.5。這是一種離散化方法,根據您擁有的桶數(此處顯示3),您會失去一些重量保真度。如果可以,請避免Solr 4 JOIN查詢;他們通常很慢。由於數據被分離,IDF分數會有點不好,所以您可能想要針對這些不考慮IDF的字段嘗試不同的相似性實現。