3

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

    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。显然,这里的希望不是让我的对象图变平。有没有办法做到这一点?

4

2 回答 2

4

我们用 [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; }
}
于 2018-08-02T14:17:10.200 回答
1

它目前是一个未解决的问题(这意味着有机会实施它!;-)

无论如何,我建议将您的课程展平,这样更明确地说只有一张桌子。用Solr wiki的话来说:

Solr 提供一张表。在索引中存储一组数据库表通常需要对某些表进行非规范化。避免非规范化的尝试通常会失败。

于 2010-08-15T19:13:40.970 回答