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);
}
}
1つの違いは、タグのエイリアスを取得するにはSelectManyステートメントを使用する必要があることです。タグには多くのエイリアスを含めることができます(つまり、タグ:マウスエイリアス:ポインティングデバイス)
SelectMany行がインデックスを壊す理由がわかりません。削除すると、インデックスが機能します。