我正在構建一個SOLR集羣,其中每個solr文檔都對應一個公司的數據。例如,以下屬性跟蹤:將歷史屬性存儲在一個SOLR文檔中
1. name
2. size
3. location
4. awards
5. profit
我的問題是,我也想追蹤歷史數據可能改變(如大小/獎項)的屬性。我知道這樣做的簡單方法是在每個時間範圍內在SOLR中有一個文檔。所以如果我想從2012年到2013年讓所有小於50歲的公司成爲一個簡單的SOLR查詢。但是,我正在處理近2000萬家公司。使用上述策略意味着每當一個屬性發生變化時,我們都會複製該文檔 - 顯着增加solr集羣中文檔的數量。
我想要一個聰明的方式來使用SOLR中的字段,以便我可以跟蹤主要公司文檔中不提倡使用的屬性及其日期。但我似乎無法找到一個好辦法來做到這一點。我知道這部分是因爲這個問題不是SOLR的設計目的,並且以這種方式存儲數據意味着它沒有正確的標準化。但是,我只是在尋找一種避免大量複製數據的好方法。
主要用例是能夠執行類似的查詢:
select all companies that were under size 50 from 2012 to 2013
所以每個屬性都有鏈接到一個值,有效日期,以及日期棄用場。此外,屬性值和日期必須是可搜索的。
我想要做這樣的事情:
{
"size":[
{
"date_deprecated": None,
"date_valid":"2015-01-01",
"value":"100"
},
{
"date_deprecated":"2014-12-31",
"date_valid":"2014-01-01",
"value":"50"
},
{
"date_deprecated":"2013-12-31",
"date_valid":"2013-01-01",
"value":"25"
}
]
}
但顯然並不在SOLR飛。另外,當我使用動態solr模式時,屬性(字段)是動態的。所以我不需要知道所有屬性是什麼。
任何想法?
你打算通過歷史數據來搜索嗎?如果不是,它不應該在Solr。 – 2015-02-11 04:40:07
@AlexandreRafalovitch是的。我希望能夠搜索並獲取具有特定屬性的所有公司的列表,這些公司在某個日期與另一個日期之間具有特定值。使用上面的示例,我想查詢SOLR,並獲取2012年至2013年所有小於50的公司的列表。 – tknickman 2015-02-11 04:44:49