Frage

Ich bin mit Solr und SolrNet für einige einfachen Szenarien in einer ASP.NET MVC-Anwendung. Für 12.59 Mappings, wo ich eine einzelne POCO zu einem Dokument am abbildet, alles funktioniert sehr reibungslos. Aber ich frage mich, ob es möglich ist, komplexere Szenarien wie die folgenden kartieren. Im Wesentlichen eine Auktion Klasse I haben, die ein Kind enthält 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;} 
    }

Natürlich kann ich die Auction Item mit Attributen in meinem Code abzubilden, aber ich frage mich, wie ich zählen kann, sagen, ItemName / ItemDescription / ItemPrice in meinem Solr Dokument. Offensichtlich hier die Hoffnung ist nicht mein Objekt Diagramm zu glätten. Gibt es einen Weg, um dieses?

zu erreichen
War es hilfreich?

Lösung

Es ist derzeit ein offene Frage (was bedeutet, dass Sie die Möglichkeit haben, sie umzusetzen; -)

Auf jeden Fall empfehle ich Ihre Klassen Abflachung, so es deutlicher ist, dass es nur eine Tabelle ist. In den Worten von der Solr Wiki :

  

Solr bietet einen Tisch. im Allgemeinen eine Reihe von Datenbanktabellen in einem Index zu speichern erfordert einige der Tabellen Denormalisierung. Versuch Denormalisierung in der Regel zu vermeiden versagen.

Andere Tipps

Wir solche Ausgabe mit [JsonIgnore] gelöst und einfachen Getter auf gruppierte Objekt zu erstellen:

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; }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top