C# Solr返回400

C# Solr返回400,c#,solr,solrnet,C#,Solr,Solrnet,这是对象模型。当我尝试将产品提交给Solr时,返回未知字段loca public class Product { [SolrUniqueKey("id")] public string Id { get; set; } [SolrField("manu")] public string Manufacturer { get; set; } [SolrField("cat")] // cat is a multiValued field publ

这是对象模型。当我尝试将产品提交给Solr时,返回
未知字段loca

public class Product
{
    [SolrUniqueKey("id")]
    public string Id { get; set; }

    [SolrField("manu")]
    public string Manufacturer { get; set; }

    [SolrField("cat")] // cat is a multiValued field
    public ICollection<string> Categories { get; set; }

    [SolrField("price")]
    public decimal Price { get; set; }

    [SolrField("inStock")]
    public bool InStock { get; set; }

    [SolrField("loca")]
    public Location Location { set; get; }
}

public class Location
{
    [SolrField("zipcode")]
    public int Zip { set; get; }
    [SolrField("country")]
    public string Country { set; get; }
}
公共类产品
{
[SolrUniqueKey(“id”)]
公共字符串Id{get;set;}
[索尔菲尔德(“曼努”)]
公共字符串制造商{get;set;}
[SolrField(“cat”)]//cat是一个多值字段
公共ICollection类别{get;set;}
[索尔菲尔德(“价格”)]
公共十进制价格{get;set;}
[SolrField(“inStock”)]
公共bool InStock{get;set;}
[索尔菲尔德(“loca”)]
公共位置位置{set;get;}
}
公共类位置
{
[索尔菲尔德(“zipcode”)]
公共int Zip{set;get;}
[索尔菲尔德(“国家”)]
公共字符串国家{set;get;}
}
嵌套类对solr合法吗

为什么它不能存储?当我移除
[SolrField(“loca”)]
时,它工作正常


如何存储此类类?

不能在Solr中执行嵌套类。因此,您需要将位置信息展平到Product类中。但是,您可以根据需要将数据映射到Solr中或映射到Solr中,从而将其表示为应用程序中的嵌套类

例如,更新Solr模式以存储loca_zipcode和loca_country字段,然后将它们映射到新的SolrProduct类中,定义如下:

public class SolrProduct
{
    [SolrUniqueKey("id")]
    public string Id { get; set; }

    [SolrField("manu")]
    public string Manufacturer { get; set; }

    [SolrField("cat")] // cat is a multiValued field
    public ICollection<string> Categories { get; set; }

    [SolrField("price")]
    public decimal Price { get; set; }

    [SolrField("inStock")]
    public bool InStock { get; set; }

    [SolrField("loca_zip")]
    public int Zip { set; get; }

    [SolrField("loca_country")]
    public string Country { get; set; }
}
公共类SolrProduct
{
[SolrUniqueKey(“id”)]
公共字符串Id{get;set;}
[索尔菲尔德(“曼努”)]
公共字符串制造商{get;set;}
[SolrField(“cat”)]//cat是一个多值字段
公共ICollection类别{get;set;}
[索尔菲尔德(“价格”)]
公共十进制价格{get;set;}
[SolrField(“inStock”)]
公共bool InStock{get;set;}
[SolrField(“loca_zip”)]
公共int Zip{set;get;}
[索尔菲尔德(“失地国”)]
公共字符串国家{get;set;}
}
然后,您可以使用类似这样的方法将
SolrProduct
展平类映射到您的
产品
类和嵌套的
位置


另一种选择是在Solr中使用,并在SolrNet中使用字典支持动态映射。有关更多详细信息和示例,请参见SolrNet wiki部分。

我明白了,没关系。我会的。谢谢你的回答。我有点希望索尔能为我做这件事。:)