Можно ли сопоставлять сложные типы с SolrNet - PullRequest
3 голосов
/ 15 августа 2010

Я использую Solr и SolrNet для некоторых простых сценариев в приложении ASP.NET MVC.Для сопоставлений один к одному, когда я сопоставляю один документ POCO с документом, все работает очень плавно.Однако мне интересно, возможно ли отобразить более сложные сценарии, подобные следующему.По сути, у меня есть класс Auction, который содержит дочерний объект 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;} 
    }

Очевидно, что я могу сопоставить Предмет аукциона с атрибутами в моем коде, но мне интересно, как я могу включить, скажем, ItemName / ItemDescription / ItemPriceв моем Solr документе.Очевидно, что надежда здесь не в том, чтобы сгладить мой объектный граф.Есть ли способ добиться этого?

Ответы [ 2 ]

3 голосов
/ 02 августа 2018

Мы решили эту проблему с помощью [JsonIgnore] и простого метода get для создания сгруппированного объекта:

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; }
}
1 голос
/ 15 августа 2010

В настоящее время это открытый выпуск (что означает, что у вас есть возможность реализовать его!

В любом случае, я рекомендую сгладить ваши классы, так что более очевидно, что есть только одна таблица. В словах Solr wiki :

Solr предоставляет одну таблицу. Хранение набора таблиц базы данных в индексе обычно требует денормализации некоторых таблиц. Попытки избежать денормализации обычно терпят неудачу.

...