搜索项目并不是一个很大的项目,在实际项目中往往是作为子项目和别的项目集成在一起的。比如说和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的更多相关文章

  1. 10 华电内部文档搜索系统 search05

    上一节讲述了索引更新的处理方案,这一节首先讲述索引维护的相关方案.每创建一个索引,把文档相关的信息插入到数据库中.这个时候会产生一个唯一的对应的ID,获取这个ID之后,把这个ID又插入到对应的索引文件 ...

  2. 10 华电内部文档搜索系统 search01

    Lucene解决搜索问题.ibatis实现存放问题,就是解决持久化问题.Struts 2做页面显示,就是实现业务层对应的功能. Spring与ibatis结合, 添加Spring支持 右击项目名s2i ...

  3. 10 华电内部文档搜索系统 search03

    上一节讲解了怎么在Struts 2下面使用内置对象传值,在Struts 2下面是用Session或者Request存放对象.在Struts 2下面是用内部对象传值,和JSP页面下面稍微有些不同.但是实 ...

  4. 10 华电内部文档搜索系统 search04

    上一节我们着重讲解了权限过滤器的使用.这一节讲解一下补充一下Struts 2下面对应的Checkbox的使用.对索引下面的数据进行维护操作,一次可以删除多个.在Struts 2下面使用对应的Check ...

  5. troff - groff 文档排版系统的 troff 处理器

    总览 SYNOPSIS troff [ -abcivzCERU ] [ -d cs ] [ -f fam ] [ -F dir ] [ -m name ] [ -M dir ] [ -n num ] ...

  6. 海量Office文档搜索

    知识管理系统Data Solution研发日记之十 海量Office文档搜索   经过前面两篇文章的介绍,<分享制作精良的知识管理系统 博客备份程序 Site Rebuild>和<分 ...

  7. mindoc 在线文档接口系统的 docker 制作过程

    说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了.github地址:https://github.com/lifei6671/mindoc 本机:ubuntu16.04 + dock ...

  8. 基于Noootes/Dooomino的文档工作流系统(转)

    (流程样例应用程序终于整理上传好可供下载了http://download.csdn.net/download/starrow/8422299) 上文分析了我们的流程配置使用三类对象,分别对应三类文档: ...

  9. lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.3

    前言: 前面几章已经很详细的讲解了如何创建索引器对索引进行增删查(没有更新操作).如何管理索引目录以及如何使用分词器,上一章讲解了如何生成索引字段和创建索引文档,并把创建的索引文档保存到索引目录,到这 ...

随机推荐

  1. python-pycharm控制台输出带颜色

    python_控制台输出带颜色的文字方法   在python开发的过程中,经常会遇到需要打印各种信息.海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性.这时候,如果能给重要的信 ...

  2. 关于git的基本使用

    参考:http://www.cnblogs.com/mengdd/p/3585038.html

  3. [MEF]第04篇 MEF的多部件导入(ImportMany)和目录服务

    一.演示概述此演示介绍了MEF如何使用ImportMany特性同时导入多个与相同约束相匹配的导出部件,并且介绍了目录服务(Catalog),该服务告知MEF框架可以在什么地方去搜寻与指定约束匹配的导出 ...

  4. Nchan 实时消息内置变量

      以下参考官方文档:   $nchan_channel_idThe channel id extracted from a publisher or subscriber location requ ...

  5. web 前端 html

    1,什么是web 在网络中,大量的数据需要有一个载体,而很多人都能够访问这个载体,利用浏览器的这个窗口链接一个有一个载体,这个载体就是网站也就是web的前身. 1,web标准:结构标准,表现标准,行为 ...

  6. ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程

    1.副总裁需要裸恢复的严峻现实 集团总部的信息部负责人给我打电话说为了找一年前的记录,所以需要对一年前2015年5月1日的数据进行恢复.而2016年初因为进行迁移,所以有些文件可能丢失,手上只有rma ...

  7. linux通过wget直接下载jdk,避免用户验证

    下载地址 :http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载语句: wget ...

  8. (四)、Fiddler打断点

    一.打断点是Fiddler一个比较好用的功能,它可以做一些手工操作很难做的事情. 那为什么要打断点? 看下图,Fiddler打开后,Client(客户端)发送的请求会先经过Fiddler,然后Fidd ...

  9. 老齐python-基础8(函数)

    1.函数基本概念 2.理解函数 python中一个函数,就是一种映射关系 3.定义函数 #!/usr/bin/env python #coding:utf-8 def add_function(a,b ...

  10. one2many &&many2many

    只记录双向的情况(双向是单向的一种)  @OneToMany 和 @ManyToOne :一个Group 包含多个 User; Group.class package com.XX.model; im ...