是否可以使用SolrNet映射复杂类型

时间:2010-08-15 18:37:40

标签: c# asp.net-mvc solr solrnet

我在ASP.NET MVC应用程序中使用Solr和SolrNet来处理一些简单的场景。对于一对一映射,我将单个POCO映射到文档,一切都非常顺利进行。但是,我想知道是否可以映射更复杂的场景,如下所示。基本上我有一个Auction类,其中包含一个子AuctionItem

    public class Auction
    {
      public virtual int ID { get; set; }
      public virtual string Name { get; set; }
      public virtual AuctionItem {get;set;} 
      public virtual DateTime StartDate { get; set; }
      public virtual DateTime EndDate { get; set; }
    }


    public class AuctionItem 
    {
      public virtual int ID { get; set; }
      public virtual string ItemName{ get; set; } 
      public virtual string ItemDescription{ get; set; }
      public virtual Double ItemPrice{get;set;} 
    }

显然我可以在我的代码中使用属性映射拍卖物品,但我想知道如何在我的Solr文档中包含ItemName / ItemDescription / ItemPrice。显然,这里的希望不是压扁我的对象图。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:3)

我们使用[JsonIgnore]和简单的getter方法创建了分组对象,从而解决了此类问题:

public class Company
{
    /// <summary>
    /// Company location
    /// </summary>
    public Location Location => new Location(Latitude, Longitude);

    // hide from json, but retrieve from solr
    [JsonIgnore, SolrField("latlng_0_coordinate")]
    public double Latitude { get; set; }

    // hide from json, but retrieve from solr
    [JsonIgnore, SolrField("latlng_1_coordinate")]
    public double Longitude { get; set; }
}

答案 1 :(得分:1)

目前是open issue(这意味着有机会实施它!; - )

无论如何,我建议展平你的课程,这样就更明确了只有一张桌子。用Solr wiki

的话来说
  

Solr提供一个表格。在索引中存储集合数据库表通常需要对某些表进行非规范化。试图避免非规范化通常会失败。