1

我正在研究solr用作 nosql 商店。我正在制作一个网站,并且需要 90% 的数据是可搜索的,所以对我来说,将信息存储在 solr 中而不是为数据建立关系模型然后保持 solr 与之同步对我来说是有意义的。

所以这是我的问题,如果我有一个我想映射的对象,它附有其他对象的列表

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、Bar 和 Baz 分成单独的核心,这是正确的方法吗?

我还被告知可以对三个核心进行组查询,构建一个包含 foo 和 bar 和 bazs 的大文档。

我在用着solr 5.0.0


SolrDocumentSerializerSolrNet.Impl名称空间中发现它可能适用于我正在寻找的复杂对象映射

4

1 回答 1

1

我不认为您需要的仅限于您的示例,但如果只是这样......要回答您的问题,您可以创建一个核心 Foo 并在其上放置三个 fietd,一个是 id,另一个是 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 中都不容易做到,如果您没有太多经验,我不建议您尝试。

于 2013-07-26T09:00:52.343 回答