SolrNet/NHibernate-在child(HasMany)类上使用SolrField?
我开始在Solr上玩NHibernate集成。到目前为止,一切都很好。但我有一个问题,我看不到在文件中的任何地方。我知道我可以绘制这样的列表:SolrNet/NHibernate-在child(HasMany)类上使用SolrField?,nhibernate,solrnet,Nhibernate,Solrnet,我开始在Solr上玩NHibernate集成。到目前为止,一切都很好。但我有一个问题,我看不到在文件中的任何地方。我知道我可以绘制这样的列表: [SolrField("blah")] public List<string> Blah {get;set;} [SolrField(“废话”)] 公共列表Blah{get;set;} 但是如果我想使用自定义类呢?我的NHibernate设置如下所示: public IList<MyCustomClass> CustomLis
[SolrField("blah")]
public List<string> Blah {get;set;}
[SolrField(“废话”)]
公共列表Blah{get;set;}
但是如果我想使用自定义类呢?我的NHibernate设置如下所示:
public IList<MyCustomClass> CustomList {get;set;}
public IList<MyCustomClass> CustomList {get;set;}
[SolrField("custom")]
private List<DateTime> CustomFieldGetter {
get {
return CustomList.Select(c => c.DateField).ToList();
}
}
public IList CustomList{get;set;}
理想情况下,我希望在MyCustomClass中映射单个字段,有效地创建该字段的列表。这可能吗?我可以做到以下几点:
public IList<MyCustomClass> CustomList {get;set;}
public IList<MyCustomClass> CustomList {get;set;}
[SolrField("custom")]
private List<DateTime> CustomFieldGetter {
get {
return CustomList.Select(c => c.DateField).ToList();
}
}
public IList CustomList{get;set;}
[索尔菲尔德(“定制”)]
私有列表CustomFieldGetter{
得到{
返回CustomList.Select(c=>c.DateField.ToList();
}
}
但这似乎是一个巨大的障碍。有什么想法吗?映射复合/嵌套对象是可行的。Solr索引是一个平面结构(请参见和),因此SolrNet鼓励非规范化映射类。这当然与关系数据库设计相反,所以在将数据提供给Solr之前,您需要先对数据进行非规范化处理。这种非规范化在很大程度上取决于您需要的查询类型。有关参考和提示,请参阅
如果您真的知道自己在做什么,您可以尝试为MyCustomClass编写并连接自定义的IsorFieldParser和IsorFieldSerializer。谢谢-我最终选择了上面介绍的CustomFieldGetter()类型的解决方案。凌乱,但它能工作。