ravendb索引的问题

时间:2017-01-26 13:31:23

标签: c# search indexing lucene ravendb

我对ravendb索引有些麻烦。

让我在代码中解释我想做什么。

我有这两个班级:

class John
{
    public string Name { get; set; }
    public IList<int> Cats { get; set; }
}

class John2
{
    public string Name { get; set; }
    public int Cat { get; set; }
}

它们各自代表ravendb中的文档类型。

我想创建一个索引。这个索引应该给我尽可能多的John2对象,因为John类型的对象的Cats列表中有条目。

让我说我有这个:

var john = new John
{
   Name = "test",
   Cats = new List<int> { 12,13}
};

然后我想要一个索引来执行以下操作:

var res = john.Cats.Select(x => new John2 {Name = "john", Cat = x});

变量res将包含2个John2类型的条目,每个条目都有自己的Cat。然后,John2条目的数量将取决于对象John上的Cats列表中的Cats数量。

首先,我对ravendb和索引完全陌生。所以我甚至不知道这样的事情是否可能。

是否有人就如何使用乌鸦索引实现上述功能提出建议?

1 个答案:

答案 0 :(得分:2)

如果您想要投放数据,可以使用Transformers

public class John2Transformer : AbstractTransformerCreationTask<John>
{
      public John2Transformer ()
      {
          TransformResults = johns => from john in johns
                                      from cat in john.Cats
                                      select new
                                      {
                                          Name = john.Name,
                                          Cat = cat
                                      };
      }
}

查询:

IList<John2> res = session.Query<John>()
      .TransformWith<John2Transformer, John2>()
      .ToList();
相关问题