我目前正在开发一个项目,使用hibernate search 4.5.0.final搜索具有时间范围的对象
当我使用范围查询根据解析为长值的时间戳搜索结果时,搜索结果似乎表现出意外。
我正在使用的查询如下:
BooleanJunction<BooleanJunction> b = qb.bool();
b.should(qb.bool()
.must(qb.range()
.onField("windowFrom")
.below(sv.getFrom().getTimestamp())
.createQuery())
.must(qb.range()
.onField("windowTo")
.above(sv.getTo().getTimestamp())
.createQuery())
.createQuery());
然后我尝试了一些像这样的解决方法:
BooleanJunction<BooleanJunction> b = qb.bool();
b.should(qb.bool()
.must(qb.range()
.onField("windowFrom")
.from(Long.parseLong("0"))
.to(sv.getFrom().getTimestamp())
.createQuery())
.must(qb.range()
.onField("windowTo")
.from(sv.getTo().getTimestamp())
.to(Long.parseLong("1450704000000"))
.createQuery())
.createQuery());
搜索工作正如我预期的那样。
我想知道我是否以错误的方式构造了查询。还有其他人以前遇到过这类问题吗?
解决方法应该可以正常工作但不是那么漂亮。所以我还在寻找解决方案。任何想法都会有所帮助。