我正在将Hibernate Search集成到我的项目中,目前它工作正常。
现在我想以这种方式优化我的搜索:基本上我想以用户身份传递像term1 AND term2 OR term3
这样的查询等等。术语的数量当然可以不同。
所以我的想法是使用逻辑运算符构建正确的搜索,以帮助用户找到他们想要的内容。
答案 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)。