使用范围查询和hibernate搜索时出现意外的搜索结果

时间:2014-04-17 13:15:50

标签: java lucene hibernate-search

我目前正在开发一个项目,使用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());

搜索工作正如我预期的那样。

我想知道我是否以错误的方式构造了查询。还有其他人以前遇到过这类问题吗?

解决方法应该可以正常工作但不是那么漂亮。所以我还在寻找解决方案。任何想法都会有所帮助。

0 个答案:

没有答案