基于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行会破坏索引。如果我删除它,索引就可以工作。
答案 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
}
};