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