Solr是一个包含solrnet和复杂对象的nosql存储

Solr是一个包含solrnet和复杂对象的nosql存储,solr,solrnet,Solr,Solrnet,我正在考虑将solr用作nosql存储。我正在创建一个网站,90%的数据都需要可搜索,所以我觉得只需将信息存储在solr中,而不是为数据建立一个关系模型,然后保持solr与之同步,这对我来说是有意义的 所以这是我的问题,如果我有一个对象,我想像这样映射,它有其他对象的列表附加到它 class Foo { int FooId { get; set; } IList<Bar> Bars { get; set; } IList<Baz> Bazs { g

我正在考虑将
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; }    
}
class-Foo
{
int FooId{get;set;}
IList条{get;set;}
IList Bazs{get;set;}
}
分类栏
{
int BarId{get;set;}
int FooId{get;set;}
}
Baz类
{
int BazId{get;set;}
int FooId{get;set;}
}
在solr和solrnet中处理此问题的最佳方式是什么

我在Solr方面的经验相对较少,但我被告知要将我的Foo、Bar和Baz分为不同的核心,这是正确的方法吗

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

我正在使用
solr5.0.0



我在
SolrNet.Impl
名称空间中找到了
SolrDocumentSerializer
,它看起来可能适用于我正在寻找的复杂对象映射

我不认为您需要的仅限于您的示例,但如果只是这样。。。 要回答您的问题,您只需创建一个核心Foo并在其上放置三个fietd,一个是id,另外两个是包含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; }
[SolrUniqueKey(“fooId”)]
公共字符串FooId{get;set;}
[索尔菲尔德(“巴里德”)]
公共ICollection BarId{get;set;}
[SolrField(“bazId”)]///cat是一个多值字段
公共ICollection BazId{get;set;}
这可以作为你的例子。
但在Solr中,任何更复杂的事情都不容易做到,如果你没有太多的经验,我建议你不要尝试。

我不认为你需要的仅限于你的例子,但如果只是这样。。。 要回答您的问题,您只需创建一个核心Foo并在其上放置三个fietd,一个是id,另外两个是包含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; }
[SolrUniqueKey(“fooId”)]
公共字符串FooId{get;set;}
[索尔菲尔德(“巴里德”)]
公共ICollection BarId{get;set;}
[SolrField(“bazId”)]///cat是一个多值字段
公共ICollection BazId{get;set;}
这可以作为你的例子。
但是,在Solr中,任何比这更复杂的操作都不容易做到,如果您没有太多的经验,我建议您不要尝试。

是的,我遇到的问题比这更复杂,并且链接的模型不仅仅是一个字段。不过我很感激你的回答!我认为solr无法满足我在这方面的需求。我可能最终会使用sql数据库来处理复杂的对象,然后设置导入文档,将sql表扁平化为可搜索的solr文档。这是从RDBMSI到3.6的思想上的一个重大转变,我们一直使用Solr,没有办法做您需要的事情。我solr 4+他们添加了一些类似于关系查询的东西,但没有任何东西可以取代数据库。是的,我现在使用solr 5.0,有可能使用join命令,我已经能够从json构建我的对象了。老实说,我认为最好使用couchdb之类的文档存储,或者将其分解为关系型sqlYes,我遇到的问题比这更复杂,链接模型不仅仅是一个字段。不过我很感激你的回答!我认为solr无法满足我在这方面的需求。我可能最终会使用sql数据库来处理复杂的对象,然后设置导入文档,将sql表扁平化为可搜索的solr文档。这是从RDBMSI到3.6的思想上的一个重大转变,我们一直使用Solr,没有办法做您需要的事情。我solr 4+他们添加了一些类似于关系查询的东西,但没有任何东西可以取代数据库。是的,我现在使用solr 5.0,有可能使用join命令,我已经能够从json构建我的对象了。老实说,我认为最好使用couchdb之类的文档存储,或者将其分解为关系sql