我们如何构造一个查询来搜索特定字段不为空?
field_name:*不管用.我试过field_name:[a* to z*]这适用于英语,但不包括所有语言.
还有其他建议吗?
我正在学习Hibernate Search Query DSL,我不知道如何使用AND或OR等布尔参数构造查询.
例如,假设我想要返回firstName值为"bill"或"bob"的所有人员记录.
在hibernate文档之后,一个示例使用bool()方法w /两个子查询,例如:
QueryBuilder b = fts.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get();
Query luceneQuery = b.bool()
.should(b.keyword().onField("firstName").matching("bill").createQuery())
.should(b.keyword().onField("firstName").matching("bob").createQuery())
.createQuery();
logger.debug("query 1:{}", luceneQuery.toString());
Run Code Online (Sandbox Code Playgroud)
这最终产生了我想要的lucene查询,但这是在hibernate搜索中使用布尔逻辑的正确方法吗?"should()"是否等同于"OR"(类似地,"must()"对应于"AND")?
此外,以这种方式编写查询感觉很麻烦.例如,如果我有一个firstNames的集合可以匹配怎么办?这种类型的查询首先是DSL的良好匹配吗?