利用Reduced功能的AbstractMultiMapIndexCreationTask<;T>;是否支持提升整个文档? [英] Is Boosting whole documents supported in an AbstractMultiMapIndexCreationTask<T> that utilizes the Reduce feature?
本文介绍了利用Reduced功能的AbstractMultiMapIndexCreationTask<;T>;是否支持提升整个文档?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试根据文档发布为discussed in this answer的最近时间来提升文档。
下面的索引定义可以很好地创建用文章和菜谱实体填充的索引。
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
,因此传递给Reduced表达式的集合实际上是IEnumerable<BoostedValue>
而不是IEnumerable<Result>
,因此无法根据输入编译Reduced表达式?
推荐答案
(此答案来自原始帖子中的评论)
如果您只想按发布日期排序,请不要使用Boost-Use.OrderByDescending(x=> x.DatePublished)
。
如果您只是想知道如何查询组合的多地图结果,您可以很容易地这样做:
var results = session.Query<Result, TestIndex>()
.Search(x=> x.Title, "whatever")
.As<object>()
.ToList();
var articles = results.OfType<Article>();
var recipies = results.OfType<Recipe>();
我假设你想要搜索,因为你在增强。您还应该将可搜索字段标记为已分析,如文档所示here。
我还假设您想要将文章和食谱分开放在单独的列表中。如果您不这样做,那么您可以直接使用对象列表。或者,如果您有一些它们都使用的基类或接口,则可以使用该基类或接口而不是对象,如.As<IWhatever>()
。
这篇关于利用Reduced功能的AbstractMultiMapIndexCreationTask<;T>;是否支持提升整个文档?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文