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