我有一个具有搜索功能的spring MVC应用程序。
流:UI>控制器> BL>数据> SOLR
允许用户使用多个字段搜索内容,例如按名称或部门搜索。业务层需要有一个Lucene查询生成器,该生成器接受字符串并为SOLR构建适当的Lucene查询。
我的控制器:
@GetMapping(params = "name")
public Page<User> findUserByName(@RequestParam("name") final String name) {
return userService.findUserByName(name);
}
@GetMapping(params = "department")
public Page<User> findUserByDepartment(@RequestParam final String department) {
return userService.findUserByFulltext(department);
}
虚拟查询生成器
public String searchByNameQuery(final String name) {
return "nm:" + name;
}
public String searchByDepartmentQuery(final String department) {
return "dpt:" + department;
}
现在,该虚拟查询构建器不支持通配符或任何其他变体。我正在阅读Apache Lucene Query API(也添加了Lucene core 7.7.1进行项目开发)和大量文章,这些文章教您如何使用不同类型的Query实现(TermQuery,PhraseQuery,BooleanQuery等),但没有完全有意义。最后,我仍然手动构建查询。
有人可以帮助我显示如何拥有适当的Lucene查询生成器类吗?
我需要使用准确的词组和通配符为这些类型的文本生成查询
(exact)Search by name: Ohio State University
Search by name: *State
Search by name: Ohio*University
Search by name: Ohio State*
Search by Department:Computer Science Dept
Search by Department: *Science
组合查询:
nm:"Ohio State University" AND dpt:"Computer Science"
答案 0 :(得分:0)
布尔查询生成器可以像这样使用:
1 subgoal
______________________________________(1/1)
forall n m : nat, n = m -> n + n = m + m
如果您希望对字段和搜索字符串进行复杂的聚合,则可以编写类似-
->