2

根据 Ayende 的这篇文章,我创建了以下索引定义

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 行会破坏索引。如果我删除它,索引就会起作用。

4

1 回答 1

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
                          }
                      };
于 2012-04-19T21:15:09.160 回答