SSM(二)Lucene 全文检索(下)

简介: 大家平时肯定都有用过全文检索工具,最常用的百度谷歌就是其中的典型。如果自己能够做一个那是不是想想就逼格满满呢。Apache就为我们提供了这样一个框架,以下就是在实际开发中加入Lucene的一个小Demo。

查询Controller的编写



接下来是查询Controller:


@RequestMapping("/q")
public String search(@RequestParam(value = "q", required = false,defaultValue = "") String q,
                     @RequestParam(value = "page", required = false, defaultValue = "1") String page,
                     Model model,
                     HttpServletRequest request) throws Exception {
    LuceneIndex luceneIndex = new LuceneIndex() ;
    List userList = luceneIndex.searchBlog(q);
    /**
     * 关于查询之后的分页我采用的是每次分页发起的请求都是将所有的数据查询出来,
     * 具体是第几页再截取对应页数的数据,典型的拿空间换时间的做法,如果各位有什么
     * 高招欢迎受教。
     */
    Integer toIndex = userList.size() >= Integer.parseInt(page) * 5 ? Integer.parseInt(page) * 5 : userList.size();
    List newList = userList.subList((Integer.parseInt(page) - 1) * 5, toIndex);
    model.addAttribute("userList",newList) ;
    String s = this.genUpAndDownPageCode(Integer.parseInt(page), userList.size(), q, 5, request.getServletContext().
            getContextPath());
    model.addAttribute("pageHtml",s) ;
    model.addAttribute("q",q) ;
    model.addAttribute("resultTotal",userList.size()) ;
    model.addAttribute("pageTitle","搜索关键字'" + q + "'结果页面") ;
    return "queryResult";
}


其中有用到一个genUpAndDownPageCode()方法来生成分页的Html代码,如下:


/**
 * 查询之后的分页
 * @param page
 * @param totalNum
 * @param q
 * @param pageSize
 * @param projectContext
 * @return
 */
private String genUpAndDownPageCode(int page,Integer totalNum,String q,Integer pageSize,String projectContext){
    long totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
    StringBuffer pageCode=new StringBuffer();
    if(totalPage==0){
        return "";
    }else{
        pageCode.append("");
        pageCode.append("");
        if(page>1){
            pageCode.append("• 上一页
");
        }else{
            pageCode.append("• 上一页
");
        }
        if(page下一页");
        }else{
            pageCode.append("• 下一页
");
        }
        pageCode.append("
");
        pageCode.append("");
    }
    return pageCode.toString();
}


代码比较简单,就是根据的页数、总页数来生成分页代码,对了我前端采用的是现在流行的Bootstrap,这个有不会的可以去他官网看看,比较简单易上手。接下来只需要编写显示界面就大功告成了。


显示界面


我只贴关键代码,具体的可以去Github上查看。


${q}未查询到结果,请换个关键字试试!
                            查询${q}关键字,约${resultTotal}条记录!
                                                    ${u.username}
                                                    ${u.description}
                                                ${u.password}
               ${u.password}


利用JSTL标签即可将数据循环展示出来,关键字就不需要单独做处理了,在后台查询的时候已经做了修改了。


总结


关于全文检索的框架不止Lucene还有solr,具体谁好有什么区别我也不太清楚,准备下来花点时间研究下。哦对了,最近又有点想做Android开发了,感觉做点东西能够实实在在的摸得到逼格确实要高些(现在主要在做后端开发),感兴趣的朋友可以关注下。哦对了,直接运行我代码的朋友要下注意:


  • 首先要将数据库倒到自己的MySQL上



  • 之后在首次运行的时候需要点击



重新生成索引按钮生成一遍索引之后才能进行搜索,因为现在的数据是直接存到数据库中的,并没有在新增的时候就增加索引,在实际开发的时候需要在新增数据那里再生成一份索引,就直接调用LuceneIndex类中的addIndex方法传入实体即可,再做更新、删除操作的时候也同样需要对索引做操作。


相关文章
|
Java Apache Maven
SSM(二)Lucene 全文检索(上)
大家平时肯定都有用过全文检索工具,最常用的百度谷歌就是其中的典型。如果自己能够做一个那是不是想想就逼格满满呢。Apache就为我们提供了这样一个框架,以下就是在实际开发中加入Lucene的一个小Demo。
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
5月前
|
搜索推荐 JavaScript Java
计算机Java项目|基于SSM的个性化商铺系统
计算机Java项目|基于SSM的个性化商铺系统
|
2月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
|
2月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
28 0
|
3月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
4月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
58 1
|
5月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
59 0
杨校老师之基于SSM开发的校园点餐配送系统
|
5月前
|
小程序 前端开发 测试技术
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
微信小程序|ssm基于微信小程序的高校课堂教学管理系统