gpt4 book ai didi

c# - 如何在 RavenDB Lucene 查询中包含日期条件

转载 作者:行者123 更新时间:2023-12-02 22:10:05 24 4
gpt4 key购买 nike

我在 RavenHQ 中有以下索引

from doc in docs 
let Tag = doc["@metadata"]["Raven-Entity-Name"]
where Tag != null && Tag=="Email"
select new { Tag, LastModified = (DateTime)doc["@metadata"]["LastModified"], DateAdded=doc.DateAdded };

我也确实将 DateAdded Indexing 设为 Analyzed。我想编写一个 Lucene 查询,其中在 where 子句中包含 less than date 条件。

我试过跟随,但没成功。

Where("DateAdded: [NULL TO 2012-12-31").ToList()

在 C# 中提供 where 子句中的日期的确切方法是什么。

谢谢。

最佳答案

最好的方法是使用 Raven 的 API 而不是自己构造查询:

var date = new DateTime(2012, 12, 31, 0, 0, 0, DateTimeKind.Utc);
session.Advanced.LuceneQuery<object>().WhereLessThan("LastModified", date);

如果您必须自己做,就像这样:

session.Advanced.LuceneQuery<object>()
.Where("LastModified: {NULL TO 2012-12-31T00:00:00.0000000Z}")

Raven 使用 Lucene Range Query SyntaxISO8601 配对日期时间格式为 7 位小数,由 Round Trip Format 提供这是从 dateTime.ToString("o") 获得的。

请注意,您说的是“小于”,所以我使用了独占 括号{ TO }。如果您想要“小于或等于”,则可以使用包含 括号[ TO ]

如果包含结尾的 ] 字符,您在问题中提供的查询将有效。但是,它不会是您要查找的内容,因为任何带有时间组件的 LastModified 条目都将落在您指定的值之后。

另请注意,LastModified 元数据存储为 UTC。

关于c# - 如何在 RavenDB Lucene 查询中包含日期条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15447290/

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