質問

ASP.NET MVCアプリケーションのいくつかの簡単なシナリオには、SolrとSolrnetを使用しています。ドキュメントに単一のPoCoをマッピングしている1つから1つのマッピングの場合、すべてが機能します 非常に スムーズに。ただし、以下のようなより複雑なシナリオをマッピングできるかどうか疑問に思っています。基本的に、子どもの競売を含むオークションクラスがあります

    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をどのように含めることができるのか疑問に思っています。明らかに、ここでの希望は、私のオブジェクトグラフを平らにすることではありません。これを達成する方法はありますか?

役に立ちましたか?

解決

現在です 開かれた問題 (それはそれを意味します 実装する機会があります! ;-)

とにかく、クラスを平らにすることをお勧めします。そのため、テーブルが1つしかないことをより明確にします。の言葉で solr wiki:

solrは1つのテーブルを提供します。インデックスに設定されたデータベーステーブルを保存するには、通常、テーブルの一部を非正規化する必要があります。非常識を避ける試みは通常失敗します。

他のヒント

Jsonignore]とSimple 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; }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top