两列上的 Hibernate 通配符查询

Hibernate wildcard query on two columns

我正在尝试 select 数据库中的人的名字和姓氏。用户可以在一个输入框中键入姓名或姓氏或同时键入两者。例如。如果用户输入 "Joh Smit" 它应该 return John Smith,但用户也可以只输入 "Joh" 或 "Smi" 来得到这个人

我应该如何构建查询来处理通配符和用户输入的所有单词? 我的实际代码如下所示:

String queryFilter = "";
for(String part : filter.split(" ")){
    queryFilter+=part.toLowerCase()+"* ";
}
queryFilter = queryFilter.trim();

query = queryBuilder.keyword().wildcard().onField("firstname").andField("lastname").matching(queryFilter).createQuery();

由于 .wildcard(),这无法处理用户输入的多个单词,但是当我删除 .wildcard() 时,我将无法搜索不准确的名称。

您想构建一个布尔查询,其中一部分针对名字,另一部分针对姓氏。像这样:

查询 luceneQuery = queryBuilder .布尔() 。应该( ) 。应该( ) .createQuery();

另请参阅 Hibernate Search 在线文档 - http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-query-querydsl - 特别是 "combining queries" 部分。