一、背景介绍
Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是使用服务器端的Apache poi技术将所有文档的文本获取后存储到数据库,然后打开文档时利用sql语句检索文档是否包含关键字来判断是否是打开文档。但是这种解决办法有很大的弊端,首先poi技术对word文档支持不是很好,其中支持word的接口单一而且不太稳定,对word文档的格式也要求很高。其次如果将成千上万个文档使用poi将其文本内容存储到数据库这一操作将会在很大程度上影响服务器的性能。本文的方案采用PageOffice提供的获取Word文档全文纯文本的功能,在每次编辑保存文件的同时,把Word文档全文纯文本提取出来保存到数据库,利用数据库sql语句检索文档是否包含关键字来实现这一需求。因为PageOffice获取全文的纯文本文档是客户端执行的,这样就在很大程度上减轻了对服务器的压力,提高了服务器的性能。
二、主要实现代码
1. 调用PageOffice在线打开word文件:test.doc
复制代码
PageOfficeCtrl poCtrl=new PageOfficeCtrl(request);
//设置服务器页面
poCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
//设置保存页面为SaveFile.jsp,或SaveFile.do SaveFile.action 等action方法或RequestMapping方法均可
poCtrl.setSaveFilePage("SaveFile.jsp");
//打开Word文档
poCtrl.webOpen("doc/test.doc",OpenModeType.docNormalEdit,"张三");
复制代码
2. 在保存文件的页面(SaveFile.jsp)或方法里执行:
复制代码
FileSaver fs=new FileSaver(request,response);
fs.saveToFile(request.getSession().getServletContext().getRealPath("SaveAndSearch/doc/")+"/"+fs.getFileName());
fs.setCustomSaveResult("ok");
String strDocumentText = fs.getDocumentText();//获取文档的纯文本内容,不带任何附加格式
//--开始 更新数据库中文档的文本内容,以SQLite数据库为例 ---
int id=Integer.parseInt(request.getParameter("id"));
Class.forName("org.sqlite.JDBC");
String strUrl = "jdbc:sqlite:"
+ this.getServletContext().getRealPath("demodata/") + "\\SaveAndSearch.db";
Connection conn = DriverManager.getConnection(strUrl);
Statement stmt = conn.createStatement();
String strsql="update word set Content='"+strDocumentText+"' where id="+id;
stmt.executeUpdate(strsql);
stmt.close();
conn.close();
//--结束 更新数据库中文档的文本内容 ---
fs.close();
复制代码
3. 需要对全文检索的时候,只需对数据库中保存了word文件纯文本内容的Content字段做查询即可实现。
三、示例说明
1. 下载地址:http://www.zhuozhengsoft.com/dowm/,下载PageOffice for JAVA 开发包
2. 示例部署:解压PageOffice开发包,拷贝Samples4文件夹到Tomcat的Webapps目录下,访问:http://localhost:8080/Samples4/index.html,查看示例演示:三、14、全文搜索包含关键字的Word文档
分享到:
相关推荐
使用spring boot+Elasticsearch 7.9.1+kibana 实现对word,pdf,txt等文件的非结构化数据全文内容检索
Lucene实现全文检索
该文档描述了Lunene的详细介绍,应用及实现的方法列子。
本案例通过.Net MVC4基础上,针对Lucene.Net实现全文检索的应用。通过查询数据表中数据,创建索引,通过统一输入框进行全文检索。可以进行对索引的增删改查功能。
mysql实现全文检索mysql实现全文检索mysql实现全文检索mysql实现全文检索mysql实现全文检索mysql实现全文检索mysql实现全文检索mysql实现全文检索
资源全免费,我的博客有相关的说明,这个是一个eclipse项目,是一个使用lucene全文检索word2007的例子,可以直接运行,但是需要在数据目录下放入word文件 才能创建索引.
本项目使用了 Lucene 的一些技术,利用 Lucene 建立索引并在该索引上进行搜索。希望本项目能够为学习 Lucene ,以及为做全文检索的读者、开发者提供帮助。
全文检索原理及实现 全文检索原理及实现 全文检索原理及实现
solr 是一款全文检索搜索引擎的开源项目,基于java 开发,可实现全文检索,地里信息定位服务的实现等。
oracle 全文检索实现,通过lucene实现oracle的全文检索,以流程图说的很详细
特别是在国产化的背景下,快速、便捷且低成本地实现全文检索功能显得尤为重要。本文旨在详细介绍如何利用国产的达梦数据库实现全文检索,并通过实践探索来加深理解。该方案适用于各种场景,包括企业和政府等行业的...
基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源...
全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,...
图书馆资料检索系统(JAVA实现),希望这个对热爱系统程序开发的朋友有所帮助
Lucene基于Java的全文检索引擎简介Lucene基于Java的全文检索引擎简介
Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源...Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
使用java技术的全文检索,企业级应用,很不错啊,哈哈哈哈
java 文件检索 搜索 word excel ppt xls pdf autocad http操作控制 windows 2003 search index不好用,自娱自乐写了一个。 只提供使用,源码出售另请联系 可用于毕业设计 在安装前配置 searchFileService.conf ...
lucene文档检索系统,java源码,可执行程序,支持pdf,doc,xls,ppt,html,txt。