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);
    }
}

1つの違いは、タグのエイリアスを取得するには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 に答える