سؤال

أنا أستخدم Solr و Solrnet لبعض السيناريوهات البسيطة في تطبيق ASP.NET MVC. للحصول على تعيينات واحدة إلى واحدة ، حيث أقوم بتخطيط poco واحد إلى وثيقة ، كل شيء يعمل جداً بسلاسة. ومع ذلك ، أتساءل عما إذا كان من الممكن تعيين سيناريوهات أكثر تعقيدًا مثل ما يلي. في الأساس لدي فئة مزاد تحتوي على مزاد للأطفال

    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;} 
    }

من الواضح أنه يمكنني تعيين عنصر المزاد مع سمات في الكود الخاص بي ، لكنني أتساءل كيف يمكنني تضمين ، على سبيل المثال ، itemName/itemDescription/itemPrice في مستند Solr الخاص بي. من الواضح أن الأمل هنا هو عدم تسوية الرسم البياني للكائن الخاص بي. هل هناك طريقة لتحقيق ذلك؟

هل كانت مفيدة؟

المحلول

إنه حاليا قضية مفتوحة (وهو ما يعني أن أنت لديك الفرصة لتنفيذها! ؛-)

على أي حال ، أوصي بتسطيح فصولك ، وبهذه الطريقة أكثر وضوحًا أن هناك جدول واحد فقط. على حد تعبير solr الويكي:

يوفر SOLR جدولًا واحدًا. يتطلب تخزين جداول قاعدة بيانات SET في الفهرس عمومًا تغيير بعض الجداول. عادة ما تفشل محاولات تجنب إزالة الطبيعية.

نصائح أخرى

لقد حلنا هذه المشكلة مع [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