2 votes

L'index RavenDB ne fonctionne pas lorsque l'on utilise SelectMany dans la fonction Map.

Sur cette base artículo À partir d'Ayende, j'ai créé la définition d'index suivante

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

Une différence est que je dois utiliser une instruction SelectMany pour obtenir les alias d'une balise. Une balise peut avoir plusieurs alias (par exemple, balise : souris alias:dispositif de pointage).

Je ne sais pas pourquoi la ligne SelectMany casse l'index. Si je la supprime, l'index fonctionne.

5voto

Matt Warren Points 7297

Cela devrait fonctionner :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X