在Map Function中使用SelectMany时,RavenDB索引无法正常工作

时间:2012-04-19 20:07:55

标签: ravendb

基于Ayende的article,我创建了以下索引定义

public class ProductsSearch : AbstractIndexCreationTask<Product, ProductsSearch.Result>
{
    public class Result
    {
        public string Query { get; set; }
    }

    public ProductsSearch()
    {
        Map = products => from product in products
                          select new
                          {
                              Query = new object[]
                              {
                                  product.Title,
                                  product.Tags.Select(tag => tag.Name),
                                  product.Tags.SelectMany(tag => tag.Aliases, (tag, alias) => alias.Name)
                              }
                          };

        Index(x => x.Query, FieldIndexing.Analyzed);
    }
}

一个区别是我必须使用SelectMany语句来获取标记的别名。 标签可以有许多别名(即标签:鼠标别名:指点设备)

我不知道为什么SelectMany行会破坏索引。如果我删除它,索引就可以工作。

1 个答案:

答案 0 :(得分:5)

这应该有效:

Map = products => from product in products
                  from tag in product.Tags
                  from alias in tag.Aliases
                      select new
                      {
                          Query = new object[]
                          {
                              product.Title,
                              tag.Name,
                              alias.Name
                          }
                      };