用于lucene时间范围的hibernate查询构建器

时间:2014-05-12 06:12:09

标签: lucene queryover

我正在为索引对象构建一个lucene查询,以确定当前时间是否在开始时间和结束时间之间。我无法得到确切的lucene查询。

org.apache.lucene.search.Query luceneQuery5=queryBuilder3.bool()
    .must(queryBuilder3.keyword().onFields("TimeDependentProfileKey").matching("TimeKey").createQuery())
    .must(queryBuilder3.range().onField("StartTime").above(new Time(0)).createQuery())
    .must(queryBuilder3.range().onField("StopTime").below(new Time(0)).createQuery()).createQuery();`

生成的lucene查询如下所示:

+TimeDependentProfileKey:3 +StartTime:[19700101000000000 TO *] +StopTime:[* TO 19700101000000000]

如何更改时间戳的格式,有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

通过搜索日期对象,您将格式化为休眠。我会考虑你指定的功能,虽然可能不太理想。如果您想使用自己的格式,您必须处理字符串,格式一致,并确保您的格式适用于排序和范围查询作为字符串。

如果您希望为您设置休眠句柄格式化日期,则需要使用@DateBridge(resolution = ...) annotation定义日期字段。这确保了hibernate将格式化日期对于lucene中的正确范围查询和排序有效,并允许您使用日期对象而不是字符串查询字段。