2013-07-24 95 views
1

我在找到使用solr作爲NoSQL的商店。我正在創建一個網站,90%的數據需要被搜索,所以我只需要將信息存儲在solr中,而不是爲數據建立關係模型,然後使solr與其保持同步。Solr的與solrnet和複雜的NoSQL存儲對象

因此,這裏是我的問題,如果我有我要地圖,像這樣具有連接到它

class Foo 
{ 
    int FooId { get; set; } 
    IList<Bar> Bars { get; set; } 
    IList<Baz> Bazs { get; set; } 
} 

class Bar 
{ 
    int BarId { get; set; } 
    int FooId { get; set; } 
} 

class Baz 
{ 
    int BazId { get; set; } 
    int FooId { get; set; }  
} 

什麼是Solr中,並從solrnet處理最好的辦法其他對象的列表對象?

我有Solr的經驗相對較少,但我已經告訴分開我Foo的,酒吧的,和巴茲的成獨立的內核,這會是正確的做法?

我也被告知,這是可能的三芯構建包含foo和酒吧,bazs一個大文件在做一組查詢。

我使用solr 5.0.0


我發現SolrDocumentSerializerSolrNet.Impl命名空間看起來像它可能爲我正在尋找複雜的類型映射

回答

1

我不認爲,你需要的是限制在你的例子,但如果只是...... 要回答你的問題,你可以創建一個核心Foo和放三個fietds就可以了,一個是id和其他2 2個多值字段包含Barid和Bazid

[SolrUniqueKey("fooId")] 
public string FooId{ get; set; } 

[SolrField("barId ")] 
public ICollection<string> BarId { get; set; } 

[SolrField("bazId ")] // cat is a multiValued field 
public ICollection<string> BazId { get; set; } 

這會爲你做例子。 但是更復雜的是,這在Solr中不容易做到,如果你沒有太多經驗,我不會建議你嘗試。

+0

是的,我有這個問題比這更復雜的一個好位,以及相關的模型不僅僅是一個單場以上。雖然我很欣賞答案!我不認爲這個人會在這方面滿足我的需求。我可能最終會用一個sql數據庫來處理複雜的對象,然後設置導入文檔來將我的sql表壓縮成可搜索的solr文檔。這是從RDBMS思維的一個重大轉變 – Neil

+0

我已經使用Solr直到3.6,並且沒有辦法做你需要的。我solr 4 +他們增加了一些類似於關係查詢,但沒有什麼應該替代數據庫。 –

+0

是的,我現在使用的是solr 5.0,它有可能使用連接命令,我已經能夠從json重新構建我的對象。說實話,我認爲最好使用像couchdb這樣的文件存儲或將其分解爲關係型SQL – Neil