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
前言: 前面几章已经很详细的讲解了如何创建索引器对索引进行增删查(没有更新操作).如何管理索引目录以及如何使用分词器,上一章讲解了如何生成索引字段和创建索引文档,并把创建的索引文档保存到索引目录,到这 ...
随机推荐
- nginx ngscript 简单使用
备注: 默认没有集成到nginx包里,需要单独安装(推荐使用动态模块的方式进行安装) 1. 安装 wget https://nginx.org/download/nginx-1.13.11.tar.g ...
- 【转】MFC对话框和控件
原文网址:http://www.cnblogs.com/tiwlin/archive/2013/05/08/3067966.html 对话框和控件 对话框是Windows应用程序中一种常用的资源,其主 ...
- XAMPP服务器在局域网只能本机访问且无法用IP访问的解决办法 (转)
XAMPP服务器在局域网只能本机访问且无法用IP访问的解决办法 前几天安装了xampp for pc 1.7.4版本. 装好后在本地电脑通过https://localhost访问正常. 然后换了台电脑 ...
- 越来越不习惯客户端了,于是卸载了xmapp,重新配置了php+apache+mysql
Mac os 10.10默认安装的是php 5.5.4版本 默认安装的apache是2.4.9 在mysql官网下载了5.7.11,此版本安装比较简单 比较郁闷的是sudo cp /etc/php.i ...
- JSONUtils的几个常用方法
1.首先新建1个JSONUtils类 public class JSONUtils { /** * * @author wangwei JSON工具类 * @param * */ /*** * 将Li ...
- 【经验】实现STL算法时遇到的模板编译错误问题
在实现set_union算法时调用了自己写的copy算法,出现了以下问题. Error 1 error C2665: 'xyz_stl::__copy' : none of the 2 overloa ...
- "==" 与 “equals”
“==”: “==”或等号操作在Java编程语言中是一个二元操作符,用于比较原生类型和对象.(操作符不支持重载overloading) “==”对比两个对象基于内存引用,如果两个对象的引用完全相同(指 ...
- [转]自己做 Visual Studio 2013 代码折叠插件
本文代码来自:https://msdn.microsoft.com/zh-cn/library/ee197665.aspx 第一步.引用 -> 程序集 -> 扩展 里找到对应 .dll 添 ...
- JPype:实现在python中调用JAVA
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- 用CSS绘制最常见的40种形状和图形
今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square(正方 ...