在RavenDB索引中使用Split

在RavenDB索引中使用Split,ravendb,Ravendb,我想在索引中使用几个正则表达式。这是一个简化的示例: Map = books => books.Select(x => new {Sentences = Regex.Split(x.Description, "<br>")}) .Select(x => new {Results = x.Sentences.Where(y => Regex.IsMatch(y, "foo"))}) .Where(x =>

我想在索引中使用几个正则表达式。这是一个简化的示例:

Map =
    books =>
      books.Select(x => new {Sentences = Regex.Split(x.Description, "<br>")})
        .Select(x => new {Results = x.Sentences.Where(y => Regex.IsMatch(y, "foo"))})
        .Where(x => x.Results.Any())
        .Select(x => new {});

我试过了。AsEnumerable(),但没用。可以这样做吗?

若要解决此问题,您需要对正在处理的对象调用.AsEnumerable()。选择“关闭”

因此,不要使用Regex.Split(…).Select(…),而是使用Regex.Split(…)。AsEnumerable().Select(…)

RavenDB依赖于一个知道如何映射公共扩展方法的内部类

但是,有时它可能无法动态解析扩展方法。要帮助动态解析,请调用.AsEnumerable(),然后将找到扩展方法

您的代码应该如下所示:

Map =
    books =>
      books.Select(x => new {Sentences = Regex.Split(x.Description, "<br>")})
        .AsEnumerable()
        .Select(x => new {Results = x.Sentences.Where(y => Regex.IsMatch(y, "foo"))})
        .Where(x => x.Results.Any())
        .Select(x => new {});
Map=
书籍=>
books.Select(x=>new{sequences=Regex.Split(x.Description,“
”)}) .可计算的() .Select(x=>new{Results=x.句子。其中(y=>Regex.IsMatch(y,“foo”))}) .Where(x=>x.Results.Any()) .Select(x=>new{});
RavenDB为您提供了一个全文索引,可以将句子拆分成单词。只列出句子,让Lucene引擎为你做这件事会更有用吗?
Map =
    books =>
      books.Select(x => new {Sentences = Regex.Split(x.Description, "<br>")})
        .AsEnumerable()
        .Select(x => new {Results = x.Sentences.Where(y => Regex.IsMatch(y, "foo"))})
        .Where(x => x.Results.Any())
        .Select(x => new {});