Pregunta

Estoy utilizando Solr y SolrNet para algunos escenarios simples en una aplicación ASP.NET MVC. De uno a uno asignaciones, donde estoy mapeo de una sola POCO a un documento, todo funciona muy sin problemas. Sin embargo, me pregunto si es posible trazar escenarios más complejos como la siguiente. Esencialmente tengo una clase de subasta que contiene un niño 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;} 
    }

Obviamente, yo puedo trazar el artículo de la subasta con atributos en mi código, pero me pregunto cómo puedo incluir, por ejemplo, NombreDeElemento / ITEMDESCRIPTION / itemprice en mi documento Solr. Es evidente que la esperanza aquí no es para aplanar mi gráfico de objetos. ¿Hay una manera de lograr esto?

¿Fue útil?

Solución

En la actualidad es un tema abierto (lo que significa que tener la oportunidad de ponerlo en práctica; -)

De todos modos recomiendo aplanando sus clases, de esa manera es más explícita que sólo hay una mesa. En palabras de la Solr wiki :

  

Solr proporciona una tabla. Almacenar un conjunto tablas de la base en un índice generalmente requiere desnormalización algunas de las tablas. Los intentos para evitar la desnormalización por lo general fallar.

Otros consejos

Hemos resuelto tal problema con [JsonIgnore] y captador simple de crear objeto agrupado:

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; }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top