1
私は現在、RavenDB 2.5から3.5へのソリューションをアップグレードしていますが、インデックス作成時に次の例外が発生します:group by
RavenDBのアップグレード:2.5〜3.5 - インデックスをコンパイルできません
IndexCreation.CreateIndexes(typeof(RavenGuid).Assembly, store);
インデックス定義
public RecordingArtistTypeaheadIndex()
{
Map = docs => docs.Select(x => new Definition { Artist = x.ArtistDisplayName });
Reduce = results => results.SelectMany(r => r.Artist.Split('|')).GroupBy(x => x).Select(g => new Definition { Artist = g.Key });
Store(x => x.Artist, FieldStorage.Yes);
Index(x => x.Artist, FieldIndexing.Analyzed);
}
例外メッセージ
Compilation Errors:
Line 40, Position 11: Error CS1525 - Invalid expression term 'by'
Line 40, Position 14: Error CS0745 - Expected contextual keyword 'by'
ソースコードは
public class Index_RecordingArtistTypeaheadIndex : Raven.Database.Linq.AbstractViewGenerator
{
public Index_RecordingArtistTypeaheadIndex()
{
this.ViewText = @"from x in docs.RepertoireResources
select new {
Artist = x.ArtistDisplayName
}
from x in results.SelectMany(r => r.Artist.Split(new char[] {'|'}))
group x by x into g
select new {
Artist = g.Key
}";
this.ForEntityNames.Add("RepertoireResources");
this.AddMapDefinition(docs =>
from x in ((IEnumerable<dynamic>)docs)
where string.Equals(x["@metadata"]["Raven-Entity-Name"], "RepertoireResources", System.StringComparison.InvariantCultureIgnoreCase)
select new {
Artist = x.ArtistDisplayName,
__document_id = x.__document_id
});
this.ReduceDefinition = results =>
from x in results.SelectMany((Func<dynamic, IEnumerable<dynamic>>)(r => (IEnumerable<dynamic>)(r.Artist.Split(new char[] {
'|'
}))))
group by x into g
select new {
Artist = g.Key
};
this.GroupByExtraction = x => x;
this.AddField("Artist");
this.AddQueryParameterForMap("ArtistDisplayName");
this.AddQueryParameterForMap("__document_id");
this.AddQueryParameterForReduce("ArtistDisplayName");
this.AddQueryParameterForReduce("__document_id");
}
}
は、誰もがこの前に出くわしましたか?
に.Artistプロパティを使用します。 Map/Reduceインデックスは何を使用していますか? 'GroupBy(x => x)' –
私はgroupbyを使って重複を取り除いています:)おそらくカンニングです。 – FaNIX