【发布时间】:2013-12-19 21:40:13
【问题描述】:
场景1:用户想找管理员,他的名字是jan。他输入“admin jan”或“jan admin”。那么结果应该是:如果数据库中有一个用户为“jan”和“admin”,它将显示该用户。即使有 10 个人在他们的电子邮件、街道名称或其他名称中带有“jan”和“admin”,它也应该显示他们。 场景 2:用户想要找到一个名叫“bebe”的人,他的技能是“HQL PHP bebe SQL JAVA”。它应该在数据库中向每个用户显示这些单词。所以它应该只显示具有这些技能和名称的用户,所以如果其他人没有技能 HQL,但有技能 PHP SQL JAVA,请不要显示这个。
我只搜索最后一个单词。因此,如果我搜索“THIS THAT THOSE PHP SQL ADMIN”,它只会找到所有使用 ADMIN 的人,而忽略字符串的其余部分。
if (action.equals("searchUser")) {
Session session = HibernateUtil.getSessionFactory().openSession();
String searchQuery = request.getParameter("searchQuery");
String[] query = searchQuery.split(" ");
for (int i = 0; i < query.length; i++) {
String hql = "FROM User WHERE username LIKE '%" + query[i] + "%' OR firstname LIKE '%" + query[i] + "%' OR lastname LIKE '%" + query[i] + "%' OR emailAddress LIKE '%" + query[i] + "%'";
List<User> result = session.createQuery(hql).list();
//set our results on the request and redirect back
request.setAttribute("users", result);
request.setAttribute("usersSize", result.size());
request.setAttribute("usersSizeResults", result.size());
System.out.println("size:" + result.size());
}
redirect(request, response, "/search.jsp");
session.close();
}
【问题讨论】: