2011-05-05 37 views
0

我已經開始使用Solr上的NHibernate集成。到目前爲止,太棒了。但是我有一個問題,我無法看到文檔中的任何地方。我知道我可以像這樣映射列表:SolrNet/NHibernate-在子(HasMany)類上使用SolrField?

[SolrField("blah")] 
public List<string> Blah {get;set;} 

但是如果我想使用自定義類,該怎麼辦?我NHibernate的設置看起來像下面這樣:

public IList<MyCustomClass> CustomList {get;set;} 

理想情況下,我想一個字段映射裏面MyCustomClass,有效地使這一領域的列表。這可能嗎?我可以做到以下幾點:

public IList<MyCustomClass> CustomList {get;set;} 

[SolrField("custom")] 
private List<DateTime> CustomFieldGetter { 
    get { 
     return CustomList.Select(c => c.DateField).ToList(); 
    } 
} 

但它看起來像一個巨大的kludge。有什麼想法嗎?

回答

1

映射覆合/嵌套對象是not currently implemented in SolrNet。 Solr索引是一個扁平結構(參見thisthis),所以SolrNet鼓勵非規範化的映射類。這當然與關係型數據庫設計相反,所以在將數據提供給Solr之前,需要將數據非規範化。這種非規範化很大程度上取決於您需要的查詢種類。請參閱SchemaDesign wiki page以供參考和提示。

如果您確實知道自己在做什麼,則可以嘗試爲MyCustomClass編寫並掛接自定義的ISolrFieldParser和ISolrFieldSerializer。

+0

謝謝,我已經結束了上面列出的CustomFieldGetter()類型的解決方案。凌亂,但它的作品。 – Alastair 2011-05-06 15:59:09