使用逻辑模式查询Hibernate Search

时间:2015-07-17 11:10:37

标签: java hibernate lucene full-text-search hibernate-search

我正在将Hibernate Search集成到我的项目中,目前它工作正常。

现在我想以这种方式优化我的搜索:基本上我想以用户身份传递像term1 AND term2 OR term3这样的查询等等。术语的数量当然可以不同。

所以我的想法是使用逻辑运算符构建正确的搜索,以帮助用户找到他们想要的内容。

2 个答案:

答案 0 :(得分:0)

您必须使用AND分隔使用OR()的条件。 例如 (term1 AND term2) OR term3

如果你再次想要使用某个术语,它应该像((term1 AND term2) OR term3) AND term4这样......

答案 1 :(得分:0)

如果您有一个实体,则可以使用this stackoverflow answer

您可以使用类似的布尔查询:

Query luceneQuery = b.bool()
    .must(b.keyword().onField("fieldName").matching("term1").createQuery())
    .must(b.keyword().onField("fieldName").matching("term2").createQuery())
    .should(b.keyword().onField("fieldName").matching("term3").createQuery())
    .except(b.keyword().onField("fieldName").matching("term4").createQuery())
    .createQuery();

必须:查询必须多于此术语(如AND)。

应该:查询应该是这个查询(如OR)。

除外:排除包含该术语的文档(如NOT)。