この回答 で説明されているように、ドキュメントが投稿された時期に基づいてドキュメントをブーストしようとしています。
次のインデックス定義は、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"; }
}
}
ドキュメントをアイテムとして保存するために Reduce を追加しようとすると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
Reduce 式に渡されているので、Reduce 式は入力に対してコンパイルできませんか?IEnumerable<BoostedValue>
IEnumerable<Result>