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
前言: 前面几章已经很详细的讲解了如何创建索引器对索引进行增删查(没有更新操作).如何管理索引目录以及如何使用分词器,上一章讲解了如何生成索引字段和创建索引文档,并把创建的索引文档保存到索引目录,到这 ...
随机推荐
- spring事务的配置
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...
- matplotlib ----- 颜色, 标记样式
颜色: 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k' 白色 - 'w' 线: 直线 - '-' 虚线 - '--' 点线 ...
- 超详细的celery异步任务和定时任务的教程
转载自:https://segmentfault.com/a/1190000007780963
- oracle11g卸载(win10)
oracle11g卸载(win10) 0.已在win10安装oracle11g 1.开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 2.运行Unive ...
- NetCore下模拟和使用Modbus工业通信协议
Tips: 1.目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net https://github.com/parallelbgls/Modbus.Net 2.modbus是 ...
- each函数遍历select标签下的所有option选项
如下: <select id="asd" name="sweet1"> <option value=1>--四川--</optio ...
- 第七章 HTTP流量管理(二) URL 重写
URL 重定向功能: 浏览器中输入 http://<host_name>:31380/v1/service-A/XXXX 经过下面的重定向,实际调用的是serviceA的/v1/XXXX ...
- node+express+socket.io制作一个聊天室功能
首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js var http=require("http ...
- jaxp使用笔记
XML文件的解析技术有DOM和SAX方式,在Android中还有pull解析方式,这里不再讨论 DOM解析的方式和js中的DOM操作是一致的,DOM解析一次将文档加载入内存建立树型模型,但是如果XML ...
- 简单租房子实例详解---(session、ajax、json前后台数据处理、分页)
本次实例我们结合session.ajax.json前后台数据处理.分页技术做一个租房信息系统 一共有五个界面:包括 管理员和用户的登录界面 登录界面的后台 <?php session_start ...