10 华电内部文档搜索系统 search02
搜索项目并不是一个很大的项目,在实际项目中往往是作为子项目和别的项目集成在一起的。比如说和OA项目集成在一起,作为另外一个项目的子系统来使用。搜索项目的功能并不复杂。
整个项目是文档搜索项目,如题:企业文档搜索项目。

是以word文档和pdf文档为例讲解的。pdf文档存放的位置是在/sooba/WebRoot/datadir/pdfdir/HITS算法在Web挖掘中的应用与改进.pdf。word文档存放的位置是在/sooba/WebRoot/datadir/worddir/面向语义Web 语义表示的模糊描述逻辑.doc。
三步骤:初始化索引、建立pdf文档索引、建立word文档索引。
后台还有一个对应的对索引进行维护的页面,或者说是一个索引维护的功能。
我们这块搜索的功能是根据关键词找出对应文档,把对应的索引删除掉。那么我们在进行搜索的时候,这些搜索的内容就不在我们搜索的范围之内,就是删除掉的内容就不在我们的搜索范围之内。

整个项目的基本的功能:第一个建立索引、第二个对索引进行维护、第三个查询。当然还有分页的功能。
针对这个项目开发,采用另外一种开发方式,采用基于原型的开发方式。或者说我们看着这个项目原型把它开发出来和当前这个项目一模一样的一个项,这就是基于原型的开发方式。
需求分析:

普通用户的需求:
能够把文档中包含的关键字作为关键词进行搜索,把对应的文档找到,那能够处理就可以了,这是客户的需求。查询的时候,我们可以输入对应关键词,按需求进行查询。
基本的需求:按照客户的需求可以检索到对应的文档,可以处理对应的文档就可以了。需求并不复杂。
管理员的需求:
可以对文档建立索引,可以对文档索引进行维护,拥有管理员权限的人才可以对索引进行维护。
这个就是客户的需求。
下面画一个usecase用例图说明这个项目的需求。

这是我们简单的需求用例图

系统设计:

系统设计首先说技术方案选型:页面处理这块选择Struts 2,Struts 2是一个用得很多的、比较流行的开源的解决业务层的技术方案。数据库处理方案:ibatis。比较小巧,使用方便,灵活性比较好,特别适合对sql语句要求比较多的项目。这是选型。
第二个,通过Spring把ibatis和Struts 2结合在一起。
这是整个项目整体的技术选型。
对于word的处理是用POI,对于pdf的处理使用的是x-pdf。
这是整体的技术方案。
系统设计分三大部分:第一部分:查询。包括查询主页面

这是查询的设计。
另外维护的设计:
整个项目的表并不复杂,一共用了两张表,一个是管理员表,

通过这张表我们可以管理管理员的相关信息,通过管理管理员的相关信息来实现对索引的维护操作。另外一个是索引的维护表:

这张表我们可以建立索引的文档,每对一个文档建立索引就要把这个文档相关信息插入到数据库表中。那么我们在对索引进行维护时,每删除一个文档,信息要从数据库删除掉。这是两张表。
所以整个项目的数据库设计并不复杂。
整个项目用到的技术选型总结:

测试用JUnit4,分页没有使用组件,独立开发的




对应的索引记录表,它用来保存创建已经建立索引对应的相关文档信息,已经建立索引的相关文档信息保存在索引表中。这个索引表对应文档索引信息表,它里面包含四个字段:
id 唯一的标识添加索引中的对应文档
filename 文档的名字
doctype 文档类型pdf/word
lastmodify 文档的最后更新时间/最后修改时间
在开发的过程中先开发管理界面,就是索引的维护,以及索引的建立,就是我们先开发维护功能。第一个就是开发索引的建立:初始化索引、pdf文档索引、word文档索引,接着再建立对应的索引的维护。接着实现整个文档搜索的功能。
第一个知识点:Struts 2内置对象传值问题。在JSP下面进行数据传值处理往往是通过Session或者是Request进行传值处理,把一个对象放到Session中或者是把一个对象放到Request中。在目标页面中再从Session中或者是Request中把值取出来。可以使用EL表达式或者是Java表达式。更习惯用EL表达式做数据的展示处理。在Struts 2中,传值的处理也是通过Request或者Session来处理的。但是它实现的方式和Struts 1.x和JSP稍微有些不同。在Struts 2下面怎么实现内置对象传值问题,怎么处理传值问题,怎么通过内置对象处理传值问题。
10 华电内部文档搜索系统 search02的更多相关文章
- 10 华电内部文档搜索系统 search05
上一节讲述了索引更新的处理方案,这一节首先讲述索引维护的相关方案.每创建一个索引,把文档相关的信息插入到数据库中.这个时候会产生一个唯一的对应的ID,获取这个ID之后,把这个ID又插入到对应的索引文件 ...
- 10 华电内部文档搜索系统 search01
Lucene解决搜索问题.ibatis实现存放问题,就是解决持久化问题.Struts 2做页面显示,就是实现业务层对应的功能. Spring与ibatis结合, 添加Spring支持 右击项目名s2i ...
- 10 华电内部文档搜索系统 search03
上一节讲解了怎么在Struts 2下面使用内置对象传值,在Struts 2下面是用Session或者Request存放对象.在Struts 2下面是用内部对象传值,和JSP页面下面稍微有些不同.但是实 ...
- 10 华电内部文档搜索系统 search04
上一节我们着重讲解了权限过滤器的使用.这一节讲解一下补充一下Struts 2下面对应的Checkbox的使用.对索引下面的数据进行维护操作,一次可以删除多个.在Struts 2下面使用对应的Check ...
- troff - groff 文档排版系统的 troff 处理器
总览 SYNOPSIS troff [ -abcivzCERU ] [ -d cs ] [ -f fam ] [ -F dir ] [ -m name ] [ -M dir ] [ -n num ] ...
- 海量Office文档搜索
知识管理系统Data Solution研发日记之十 海量Office文档搜索 经过前面两篇文章的介绍,<分享制作精良的知识管理系统 博客备份程序 Site Rebuild>和<分 ...
- mindoc 在线文档接口系统的 docker 制作过程
说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了.github地址:https://github.com/lifei6671/mindoc 本机:ubuntu16.04 + dock ...
- 基于Noootes/Dooomino的文档工作流系统(转)
(流程样例应用程序终于整理上传好可供下载了http://download.csdn.net/download/starrow/8422299) 上文分析了我们的流程配置使用三类对象,分别对应三类文档: ...
- lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.3
前言: 前面几章已经很详细的讲解了如何创建索引器对索引进行增删查(没有更新操作).如何管理索引目录以及如何使用分词器,上一章讲解了如何生成索引字段和创建索引文档,并把创建的索引文档保存到索引目录,到这 ...
随机推荐
- springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...
- F4NNIU 版本的标准电阻列表(2018-09-29 更新)
F4NNIU 版本的标准电阻列表(2018-09-29 更新) 值代码 电阻值 格式化值 单位 公差代码 公差 格式化值数字 描述 0RJ 0 0 R J 5% J0000 0R 5% (0RJ) 1 ...
- bzoj 2632 [neerc2011]Gcd guessing game——贪心(存疑)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2632 官方题解:http://neerc.ifmo.ru/archive/2011/neer ...
- Centos下 yum方式安装LAMP
首先安装apache centos可以直接yum安装apache . 配置网易163 yum源 http://www.cnblogs.com/carbon3/p/5635403.html 一. ...
- JEECG获取当前登录人的值
TSUser user = ResourceUtil.getSessionUserName(); mv.addObject("fbillerid", user.getUserNam ...
- SmtpClient发送邮件
使用第三方SMTP服务器来发送邮件.如网易: SmtpClient sc = new SmtpClient("smtp.126.com"); sc.Credentials = ne ...
- 为什么 JSON 接口的数据都要加双引号!!!不能用单引号
原因是:Javascript 在很多时候会把 JSON 对象里面没有双引号包围的值,当做数值处理.比如: {"a":987654321} 这个 JSON 里头的变量 a,会被当做一 ...
- django-cbv模式-csrf中间件
1. django模式 def users(request): user_list = ['alex','oldboy'] return HttpResponse(json.dumps((user_l ...
- CocoStudio资源区导入Plist/PSD文件
这两种文件在使用中和普通文件稍有不同,下作简单介绍.如有不适的地方欢迎批评指正. 首先简单说一下Plist文件,Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS ...
- 关于linux网络基础记录
1.linux操作系统是一套非常稳定的操作系统,作用永不止于提供网络服务那么简单.(www.Mail.FTP.DNS.DHCP.NAT.Router) 2.对于一个服务器而言,“搭建容易维护难”:维护 ...