gpt4 book ai didi

lucene - 如何通过 RavenDB 中的新近度来提升文档?

转载 作者:行者123 更新时间:2023-12-04 18:46:15 26 4
gpt4 key购买 nike

是否可以在 RavenDB 查询中提升最近的文档?

This question is exactly what I want to do但指的是原生 Lucene,而不是 RavenDB。

例如,如果我有这样的文档

public class Document
{
public string Title { get; set; }
public DateTime DateCreated { get; set; }
}

如何提升日期更接近给定日期的文档,例如 DateTime.UtcNow ?

我不想 OrderByDecending(x => x.DateCreated)因为还有其他搜索参数需要影响结果。

最佳答案

您可以在索引期间提升,它已经在 RavenDB 中使用了很长时间,但它根本不在文档中。但是,有一些单元测试可以说明 here .

这些测试显示了单个提升值,但它可以很容易地从其他文档值中计算出来。您可以使用完整的文档,因为这是在写入索引条目时完成的。您应该能够将其与您引用的帖子中描述的技术结合起来。

Map = docs => from doc in docs
select new
{
Title = doc.Title.Boost(doc.DateCreated.Ticks / 1000000f)
};

您还可以提升整个文档,而不仅仅是标题字段,如果您的搜索算法中有其他字段,这可能很有用:

Map = docs => from doc in docs
select new
{
doc.Title
}.Boost(doc.DateCreated.Ticks / 1000000f);

您可能需要尝试使用正确的值来用于提升量。一毫秒有 10,000 个滴答声,这就是为什么我要除以这么大的数字。

另外,请注意 DateTime您使用的是 UTC,或者如果您无法控制它的来源,则使用 DateTimeOffset反而。为什么?因为您使用的是从某个引用点计算的持续时间,并且您不希望结果对于不同的时区或夏令时变化前后不明确。

关于lucene - 如何通过 RavenDB 中的新近度来提升文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com