lucene时间范围的hibernate查询生成器

lucene时间范围的hibernate查询生成器,lucene,queryover,Lucene,Queryover,我正在为索引对象构建一个lucene查询,以确定当前时间是否介于开始时间和结束时间之间。我无法得到确切的lucene查询 org.apache.lucene.search.Query luceneQuery5=queryBuilder3.bool() .must(queryBuilder3.keyword().onFields("TimeDependentProfileKey").matching("TimeKey").createQuery()) .must(queryBuil

我正在为索引对象构建一个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]

我如何更改时间戳的格式,请任何人帮助我。

通过搜索日期对象,您将格式设置推迟到hibernate。我认为您指定的格式是功能性的,虽然可能不是理想的。如果您想使用自己的格式,您必须处理字符串,保持格式一致,并确保您的格式能够很好地作为字符串进行排序和范围查询


如果希望hibernate为您处理格式化日期,则需要使用。这确保hibernate将有效地格式化日期,以便在lucene中进行正确的范围查询和排序,并允许您使用日期对象而不是字符串来查询字段。

我不确定是否理解您的问题。什么意思,更改时间戳的格式?假设您使用带有@DateBridge注释的字段,Hibernate/Lucene应该处理查询日期的格式设置。您观察到的问题是什么?@femtoRgon:感谢您的回复:lucene查询中的starttime以不同的格式显示,对于该格式,object中的格式与什么格式不匹配?关键是,您的查询看起来是正确的。你的上/下颠倒了吗?x之后的starttime和x之前的stoptime听起来像胡说八道,但不确定这到底是如何反映您的实际查询的。否则,索引数据的方式可能有问题。StartTime和StopTime字段中的值存储在格式HH:mm:ss中,而为范围构建lucene查询时,时间戳不是所需的格式[HH:mm:ss],我甚至尝试在上面和下面的时间项目参数中使用SimpleDataFormatter。感谢您的建议,我尝试使用@DateBridgeresolution=RESOLUTION.SECOND,但使用它,我可以获得YYYYmmddhhmmss格式,但因为我只需要hhmmss,我将日期对象转换为整数,然后查询整数字段以获得所需的结果。谢谢你的指导