在Lucene.net中使用日期范围

时间:2008-11-17 19:16:02

标签: lucene lucene.net

我理解Lucene.net如何用于文本索引。我能否根据给定的日期范围有效搜索文档?或者Lucene.net会使用文本匹配来匹配日期吗?

2 个答案:

答案 0 :(得分:6)

Lucene.Net将只使用文本匹配,因此您需要在添加到索引之前正确格式化日期:

    public static string Serialize(DateTime dateTime)
    {
        return dateTime.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture);
    }

    public static DateTime Deserialize(string str)
    {
        return DateTime.ParseExact(str, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
    }

然后,您可以执行基于范围的查询以按日期过滤(例如,2006 *至2007 *,以包括2006年和2007年的所有日期)。

答案 1 :(得分:1)

当我将日期转换为yyyymmddHHmmssff时,我遇到了麻烦。当我尝试对数据进行排序时,它给了我一个例外,它太大了,无法转换。因此我搜索并找到你需要有两列。一个在yyyymmdd而另一个HHmmss,然后使用Sort[]并提供这两列,然后使用。这将解决问题。