一尘不染

加快搜索表单中的数据访问

jsp

在使用hibernate和JPA的spring
mvc应用程序中,我具有一个keyword类,该类使用户可以搜索基础数据库中的记录。JSP在蒲公英数据表中有一个搜索框,用户键入文本以减少keyword选项的数量,直到搜索结果包含足够短的列表为止keywords,用户可以从中选择要用于搜索的单词。

问题是,keywords基础数据表中有80,000
keywords,即使我在基础数据库表上为搜索中使用的字段添加了索引之后,我的应用程序仍需要20分钟才能将所有这些数据发送到JSP。有什么方法可以将其设置keywords为仅在搜索框中至少输入3个字符的文本时才发送给JSP吗?

这是我的controller方法:

@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;
}

阅读 189

收藏
2020-06-08

共1个答案

一尘不染

恐怕客户端性能不佳来自您用于加载数据的方法。我认为对于DOM源来说80000条记录实在太多了,尤其是在按键上触发搜索时。

在v0.10.0之前:
建议您切换到AJAX源(启用分页)。需要做更多的工作来设置内容,但它会对性能产生重大影响。请注意,JSP示例应用程序确实使用与您相同的技术(Spring,JPA)。随意看看。

但是,如果你真的想保持加载数据与DOM源,你可以简单地解除绑定的按键事件处理函数,如建议这个职位。要实现它,您将需要Dandelion-Datatables
额外JavaScript功能

从v0.10.0开始: 过滤功能已通过多种方式进行了改进:

当然,仍然建议使用AJAX源,但是以上功能将进一步改善UX。该版本发布后,我将使用指向新文档和示例应用程序的正确链接来更新此anwser。

希望这可以帮助!

(免责声明StackOverflow:我是《蒲公英》的作者)

编辑:蒲公英0.10.0发布。链接已添加

2020-06-08