我正在尝试根据最近他们发布的日期作为discussed in this answer来增强文档。是否在使用Reduce功能的AbstractMultiMapIndexCreationTask <T>中支持整个文档?
以下索引定义可以很好地创建填充了Article和Recipe实体的索引。
public class TestIndex : AbstractMultiMapIndexCreationTask<Result>
{
public TestIndex()
{
AddMap<Article>(docs => from doc in docs
where !doc.IsDeleted
select new Result
{
Id = doc.Id,
Title = doc.Title,
DatePublished = doc.DatePublished
}.Boost(doc.DatePublished.Ticks/1000000f));
AddMap<Recipe>(docs => from doc in docs
where !doc.IsDeleted
select new Result
{
Id = doc.Id,
Title = doc.Title,
DatePublished = doc.DatePublished
}.Boost(doc.DatePublished.Ticks/100000f));
}
public override string IndexName
{
get { return "Tests/WithBoost"; }
}
}
当我尝试添加减少对文件存储为Result
项指数停止产生任何结果。
public class TestIndex : AbstractMultiMapIndexCreationTask<Result>
{
public TestIndex()
{
AddMap<Article>(docs => from doc in docs
where !doc.IsDeleted
select new Result
{
Id = doc.Id,
Title = doc.Title,
DatePublished = doc.DatePublished
}.Boost(doc.DatePublished.Ticks/100000f));
AddMap<Recipe>(docs => from doc in docs
where !doc.IsDeleted
select new Result
{
Id = doc.Id,
Title = doc.Title,
DatePublished = doc.DatePublished
}.Boost(doc.DatePublished.Ticks/100000f));
Reduce = docs => from doc in docs
group doc by doc.Id into g
select new Result
{
Id = g.First().Id,
Title = g.First().Title,
DatePublished = g.First().DatePublished
};
}
public override string IndexName
{
get { return "Tests/WithBoost"; }
}
}
是使用AbstractMultiMapIndexCreationTask<T>
的减少功能时提高支持文件?
一个思想,我有是Boost()
返回BoostedValue
,所以收集传递给降低表达的实际上IEnumerable<BoostedValue>
代替IEnumerable<Result>
,因此降低表达不能对输入进行编译?
你使用什么构建?这应该工作 –
哦,对不起。 Boost将应用于最后一件事,而不是在地图上。 但请注意,您的索引没有意义。有没有必要减少 –
@AyendeRahien我使用960版本。你是什么意思“在最后一件事”?你的意思是在Reduce中,而不是在Map中。你是说这个指数没有意义?在实际的实现中'Result'具有更多的属性,'Article'和'Recipe'是完全不同的实体。我需要一种将它们作为单个集合进行查询的方式,并以一致的方式将它们列在页面上。 “结果”的简单性以及“Article”和“Recipe”之间的相似性仅供参考。 –