0
我有多重映射/降低其是伟大的工作指标,但是我现在要上的一个字段查询......但现场是一个子对象中......多重映射/减少索引字段问题
ReduceResult
- Name
- Description
- GenreObject
- Name
- Code
我曾尝试过各种选择,但我仍然得到下面的错误:
Index(x => x.Genre.Code, FieldIndexing.Analyzed);
Store(x => x.Genre.Code, FieldStorage.Yes);
或 指数(X => x.Genre,FieldIndexing.Analyzed); 存储(x => x.Genre,FieldStorage.Yes);
我可以在管理控制台看到它有'Code'字段的索引,但它似乎在寻找Genre_Code。
Url: "/indexes/AudioWithCounters?query=Genre_Code%253Ahouse&start=0&pageSize=25&aggregation=None&sort=-WeeksComments"
System.ArgumentException: The field 'Genre_Code' is not indexed, cannot query on fields that are not indexed
我试图改变索引字段名称为“Genre_Code”手动管理控制台,但它似乎没有保存。
我知道我可以奉承我的类型对象,但是id而不是如果我能逃脱它。
任何想法?
更新 - 完整的索引:
namespace HM.Web.Infrastructure.Indexes
{
public class AudioWithCounters : AbstractMultiMapIndexCreationTask<AudioWithCounters.AudioViewModel>
{
public class AudioViewModel
{
public string Id { get; set; }
public string ArtistName { get; set; }
public string Name { get; set; }
public string Identifier { get; set; }
public string Description { get; set; }
public IList<Tag> Tags { get; set; }
public Genre Genre { get; set; }
public DateTimeOffset? DateAdded { get; set; }
public UserImage Image { get; set; }
public int TotalComments { get; set; }
public int TotalDownloads { get; set; }
public int TotalPlays { get; set; }
public int TotalLikes { get; set; }
public int TotalFavourites { get; set; }
public int WeeksComments { get; set; }
public int WeeksDownloads { get; set; }
public int WeeksPlays { get; set; }
public int WeeksLikes { get; set; }
public int WeeksFavourites { get; set; }
}
public AudioWithCounters()
{
AddMap<Audio>(audios => from audio in audios
select new
{
Id = audio.Id,
ArtistName = audio.ArtistName,
Name = audio.Name,
Identifier = audio.Identifier,
Description = audio.Description,
Tags = audio.Tags,
Genre = audio.Genre,
DateAdded = audio.DateAdded,
Image = audio.Image,
TotalDownloads = 0,
TotalComments = audio.CommentsCount,
TotalPlays = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<AudioComments>(comments => from audioComment in comments
from comment in audioComment.Comments
where comment.CreatedAt >= DateTimeOffset.Now.AddDays(-7)
select new
{
Id = audioComment.Audio.Id,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalComments = 0,
TotalPlays = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 1,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<AudioCounter>(counters => from counter in counters
where counter.Type == Core.Enums.Audio.AudioCounterType.Download
select new
{
Id = counter.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 1,
TotalComments = 0,
TotalPlays = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<AudioCounter>(counters => from counter in counters
where counter.Type == Core.Enums.Audio.AudioCounterType.Play
select new
{
Id = counter.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 1,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<AudioCounter>(counters => from counter in counters
where counter.Type == Core.Enums.Audio.AudioCounterType.Download
where counter.DateTime >= DateTimeOffset.Now.AddDays(-7)
select new
{
Id = counter.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 1,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<Like>(likes => from like in likes
select new
{
Id = like.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 1,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<Favourite>(favs => from fav in favs
select new
{
Id = fav.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 1,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<AudioCounter>(counters => from counter in counters
where counter.Type == Core.Enums.Audio.AudioCounterType.Play
where counter.DateTime >= DateTimeOffset.Now.AddDays(-7)
select new
{
Id = counter.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 1,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 0
});
AddMap<Like>(likes => from like in likes
where like.DateCreated >= DateTimeOffset.Now.AddDays(-7)
select new
{
Id = like.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 1,
WeeksFavourites = 0
});
AddMap<Favourite>(favs => from fav in favs
where fav.DateCreated >= DateTimeOffset.Now.AddDays(-7)
select new
{
Id = fav.AudioId,
ArtistName = (string)null,
Name = (string)null,
Identifier = (string)null,
Description = (string)null,
Tags = (object)null,
Genre = (object)null,
DateAdded = (object)null,
Image = (object)null,
TotalDownloads = 0,
TotalPlays = 0,
TotalComments = 0,
TotalLikes = 0,
TotalFavourites = 0,
WeeksDownloads = 0,
WeeksPlays = 0,
WeeksComments = 0,
WeeksLikes = 0,
WeeksFavourites = 1
});
Reduce = results => from result in results
group result by result.Id
into g
select new
{
Id = g.Key,
ArtistName = g.Select(x => x.ArtistName).Where(x => x != null).FirstOrDefault(),
Name = g.Select(x => x.Name).Where(x => x != null).FirstOrDefault(),
Identifier = g.Select(x => x.Identifier).Where(x => x != null).FirstOrDefault(),
Description = g.Select(x => x.Description).Where(x => x != null).FirstOrDefault(),
Tags = g.Select(x => x.Tags).Where(x => x != null).FirstOrDefault(),
Genre = g.Select(x => x.Genre).Where(x => x != null).FirstOrDefault(),
DateAdded = g.Select(x => x.DateAdded).Where(x => x != null).FirstOrDefault(),
Image = g.Select(x => x.Image).Where(x => x != null).FirstOrDefault(),
TotalDownloads = g.Sum(x => x.TotalDownloads),
TotalPlays = g.Sum(x => x.TotalPlays),
TotalComments = g.Sum(x => x.TotalComments),
TotalLikes = g.Sum(x => x.TotalLikes),
TotalFavourites = g.Sum(x => x.TotalFavourites),
WeeksComments = g.Sum(x => x.WeeksComments),
WeeksDownloads = g.Sum(x => x.WeeksDownloads),
WeeksPlays = g.Sum(x => x.WeeksPlays),
WeeksLikes = g.Sum(x => x.WeeksLikes),
WeeksFavourites = g.Sum(x => x.WeeksFavourites)
};
Index(x => x.Genre.Code, FieldIndexing.Analyzed);
Store(x => x.Genre.Code, FieldStorage.Yes);
}
}
}
您是否可以更新问题,使其包含您正在使用的索引,而不会很难说出问题所在。 – 2012-01-27 16:30:54
更新了完整的索引代码 – 2012-01-27 18:18:36
呃,这似乎是一个非常复杂的指数,你也有多个AddMap子句为相同的类型有点奇怪。 RavenDB邮件列表可能会更好地讨论这个问题。你能在那里发表一篇关于你的文档的描述以及你正在尝试做什么。 –
2012-01-27 19:09:54