是否可以在RavenDB查询中提升最近的文档?
这个问题正是我想做的,但是指的是原生的Lucene,而不是RavenDB.
例如,如果我有这样的文档
public class Document
{
public string Title { get; set; }
public DateTime DateCreated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何增加日期更接近给定日期的文档,例如DateTime.UtcNow
?
我不想,OrderByDecending(x => x.DateCreated)
因为还有其他搜索参数需要影响结果.
您可以在索引编制期间进行提升,它已经在RavenDB中使用了很长时间,但它根本不在文档中.然而,也有说明了一些单元测试在这里.
这些测试显示单个提升值,但可以轻松地从其他文档值计算.您可以使用完整的文档,因为在写入索引条目时已完成此操作.您应该能够将此与您引用的帖子中描述的技术相结合.
Map = docs => from doc in docs
select new
{
Title = doc.Title.Boost(doc.DateCreated.Ticks / 1000000f)
};
Run Code Online (Sandbox Code Playgroud)
您还可以提升整个文档而不仅仅是标题字段,如果您的搜索算法中有其他字段,这可能会很有用:
Map = docs => from doc in docs
select new
{
doc.Title
}.Boost(doc.DateCreated.Ticks / 1000000f);
Run Code Online (Sandbox Code Playgroud)
您可能需要尝试使用正确的值来用于增加量.一毫秒内有10,000个滴答,这就是为什么我除以如此大的数字.
另外,请注意DateTime
您使用的是UTC格式,或者如果您无法控制它的来源,请使用DateTimeOffset
代替.为什么?因为您正在使用某个参考点的计算持续时间,并且您不希望结果在不同时区或夏令时变化时不明确.
归档时间: |
|
查看次数: |
437 次 |
最近记录: |