我正试着按姓名和姓氏从数据库中挑选人。用户可以在一个输入框中键入姓名或姓氏或两者。例如,如果用户键入“just”,它应该返回John,但用户也可以只键入"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()
时,我将无法搜索不确切的名称。
发布于 2015-11-24 07:57:33
您希望构建一个布尔查询,其中一个部分的目标是名字,另一个部分是姓氏。就像这样:
查询luceneQuery = queryBuilder .bool() .should( ) .should( ) .createQuery();
还请参阅Hibernate搜索在线文档- single/#search-query-querydsl -特别是“组合查询”部分。
https://stackoverflow.com/questions/33886744
复制相似问题