0

我已经开始在 Solr 上使用 NHibernate 集成。到目前为止,太棒了。但是我有一个问题,我在文档的任何地方都看不到。我知道我可以像这样映射一个列表:

[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();
    }
}

但这似乎是一个巨大的杂物。有什么想法吗?

4

1 回答 1

1

SolrNet 当前未实现映射复合/嵌套对象。Solr 索引是一个扁平结构(参见thisthis),因此 SolrNet 鼓励非规范化映射类。这当然与关系数据库设计相反,因此您可以在将数据提供给 Solr 之前对其进行非规范化处理。这种非规范化很大程度上取决于您需要的查询类型。请参阅SchemaDesign wiki 页面以获取参考和提示。

如果你真的知道你在做什么,你可以尝试为你的 MyCustomClass 编写并连接一个自定义的 IsolrFieldParser 和 IsolrFieldSerializer。

于 2011-05-05T15:37:34.987 回答