我正在我的项目中集成Hibernate搜索,目前它工作得很好。
现在我想以这种方式改进我的搜索:基本上,作为一个用户,我想传递一个查询,比如term1 AND term2 OR term3
等等。当然,项的数量可以不同。
所以我的想法是用逻辑运算符构建一个合适的搜索来帮助用户找到他们想要的
您必须通过使用()
来分离使用AND
和OR
的条件。如。(term1 AND term2) OR term3
如果你再次想使用一些术语,它应该像((term1 AND term2) OR term3) AND term4
这样.....
如果你有一个实体,你可以使用这个stackoverflow答案。
您可以使用布尔查询:
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)。
should:查询是否应该执行此查询(如OR)。
except:排除包含此术语的文档(如NOT)。