首页 / JAVA / java-加快搜索表单中的数据访问
java-加快搜索表单中的数据访问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-加快搜索表单中的数据访问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2558字,纯文字阅读大概需要4分钟。
内容图文
![java-加快搜索表单中的数据访问](/upload/InfoBanner/zyjiaocheng/690/7cae3c354050487ca977f13d380c42de.jpg)
在使用hibernate和JPA的spring mvc应用程序中,我有一个关键字类,该类使用户可以搜索基础数据库中的记录. JSP在蒲公英数据表中有一个搜索框,用户输入文本以减少关键字选项的数量,直到搜索结果包含足够短的关键字列表为止,用户可以从中选择要用于搜索的单词.
问题在于,基础数据表中有80,000个关键字,即使我在基础数据库表上为搜索中使用的字段添加了索引之后,我的应用程序仍需要20分钟才能将所有这些关键字发送到JSP.有什么方法可以将关键字设置为仅在搜索框中至少输入3个字符的文本时才将关键字发送给JSP吗?
这是我的控制器方法:
@RequestMapping(value = "/search", method = RequestMethod.GET)
public String processFindForm(
ConcWordKey wordkey, HttpServletRequest request, BindingResult result, Map<String, Object> model) {
Collection<ConcWordKey> results = this.clinicService.findKeyWord("");
System.out.println("results.size() is: "+results.size());
model.put("selections", results);
return "search";
}
这是JSP的相关部分:
<datatables:table id="keywords" data="${selections}" cdn="true" row="kw" theme="bootstrap2"
cssClass="table table-striped" paginate="true" info="false"
cssStyle="width: 150px;" align="left" dom="frtp">
<datatables:column title="Name" cssStyle="width: 150px;" display="html">
<spring:url value="/search?name={name}" var="searchUrl">
<spring:param name="name" value="${kw.name}"/>
</spring:url>
<a href="${fn:escapeXml(searchUrl)}"><c:out value="${kw.name}"/></a>
</datatables:column>
</datatables:table>
这是填充选择的JPA方法:
@SuppressWarnings("unchecked")
public Collection<ConcWordKey> findKeyWord(String str) {
Query query = this.em.createQuery("SELECT DISTINCT wk FROM ConcWordKey wk WHERE wk.name LIKE :wd");
query.setParameter("wd", str + "%");
Collection<ConcWordKey> results = query.getResultList();
return results;
}
解决方法:
恐怕客户端性能不佳来自您用于加载数据的方法.我认为对于DOM源来说80000条记录实在太多了,尤其是在按键上触发搜索时.
在v0.10.0之前:
我建议您切换到AJAX source(启用分页).需要做更多的工作来设置内容,但它会对性能产生重大影响.
请注意,JSP sample应用程序确实使用与您相同的技术(Spring,JPA).随意看看.
但是,如果您确实想继续使用DOM源加载数据,则可以按照this post中的建议,简单地取消绑定keypress事件处理程序.要实现它,您将需要Dandelion-Datatables的extra JavaScript feature.
从v0.10.0开始:过滤功能已通过多种方式进行了改进:
>在触发搜索之前始终应用time delay(默认情况下为500ms,可配置)
>也可以配置min character length
>或者您也可以将search on a click event开除
当然,仍然建议使用AJAX源,但是以上功能将进一步改善UX.该版本发布后,我将使用指向新文档和示例应用程序的正确链接来更新此anwser.
希望这可以帮助!
(免责声明StackOverflow:我是《蒲公英》的作者)
编辑:蒲公英0.10.0发布.链接已添加
内容总结
以上是互联网集市为您收集整理的java-加快搜索表单中的数据访问全部内容,希望文章能够帮你解决java-加快搜索表单中的数据访问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。