一、背景介绍
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文档
分享到:
相关推荐
### Java的全文检索实现 随着互联网的飞速发展,搜索引擎已成为获取信息不可或缺的工具之一。在这一背景下,本文深入探讨了基于Java实现全文检索的方法及其性能优化策略。 #### 一、全文检索系统的机制 全文检索...
本教程将详细介绍如何利用Spring Boot集成Elasticsearch 7.9.1及Kibana来实现对这些文件的全文内容检索。 首先,我们需要理解Elasticsearch的核心概念。Elasticsearch是一个开源的分布式搜索引擎,以它的高可扩展性...
在 Java 中实现全文检索,通常涉及以下几个关键步骤: 1. **建立索引**:首先,需要将待检索的文档转换为 Lucene 可以处理的格式,并生成索引。这包括对文档内容进行分词(Tokenization)、去除停用词(Stop Word ...
Lucene全文检索Word2007示例项目提供了一个实用的方法,将复杂的文本搜索功能引入到Java应用中,尤其适用于处理大量的文档数据。通过结合使用Lucene和Apache POI,我们可以高效地索引和检索Word2007文档内容,为用户...
本项目以"weboffice-provider-v3-java-master"为名,暗示着这是一个基于Java后端和Vue.js前端的WPS在线编辑解决方案。 首先,让我们深入了解一下Java。Java是一种广泛使用的面向对象的编程语言,特别适合于开发...
总结来说,"word文本在线编辑器"是一个基于Web技术,特别是JavaScript的文档编辑工具,它复现了Word的主要功能,并且允许用户插入图片、创建超链接,同时还具备功能可配置性。开发者可以通过添加插件来扩展功能,而...
Java中的Lucene库是常用的全文搜索引擎,可以用来实现高效的文本索引和检索。同时,可能还需要结合数据库管理系统(如MySQL或Oracle),存储图书信息,并通过SQL语句执行复杂的查询操作。 权限管理是图书馆资料检索...
Java 实现的基于内容的图像检索工具包是一个强大的软件框架,专门用于在大量图像数据库中寻找与查询图像相似的图片。这种技术的核心在于提取图像的关键特征,如颜色、纹理和形状,然后通过比较这些特征来确定图像...
在JSP中实现全文检索是一项常见的Web开发任务,它涉及到搜索引擎技术,使得用户能够通过输入关键词快速、准确地查找所需信息。在这个实例中,我们将探讨如何在Java服务器页面(JSP)中构建一个简单的全文检索系统。 ...
在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在本文中,我们将探讨如何使用Lucene对这些文件类型进行全文检索的实现。 首先,为了实现全文...
Java全文检索是基于Java语言实现的一种高效、精准的文本搜索技术,它在企业级应用中扮演着重要角色,尤其对于处理大量数据的搜索需求。在本文中,我们将深入探讨Java全文检索的核心概念、常用库、实现原理以及如何在...
Oracle 全文检索实现 Oracle 全文检索实现是通过 Lucene 实现的,全文检索是指在数据库中检索特定关键字的记录。这一实现的思路是将数据库中的记录对应索引文件中的一个文档,表主键直接存储在索引文件中,而非主键...
Java全职检索技术是开发高效率、高性能搜索功能的关键,而Lucene作为Apache软件基金会的顶级项目,是一款强大的全文搜索引擎库。在这个“Java多级多类型全文检索 - 基于Lucene3.3.0”的主题中,我们将深入探讨如何...
### 基于Java的全文检索引擎Lucene详细介绍 #### 一、Lucene概述与历史背景 Lucene是一个开源的高性能全文检索库,它由Doug Cutting创建并维护,旨在为各种规模的应用程序提供高效的文本搜索功能。Lucene采用Java...
Java 操作 Word、Excel、PDF 等文档是 Java 开发中的一个重要方面。通过使用相关的库和技术,可以实现对文档的读取、写入、编辑等操作。本文总结的知识点可以帮助开发者更好地理解 Java 操作文档的原理和方法,并...
使用PageOffice开发平台,实现对word文档的在线处理,并搜索、显示含有关键字的文档。 要获取文档的纯文本,以往的方法都比较复杂,而且效率也不高,但是利用PageOffice的FileSaver 对象的DocumentText属性却能...
**Lucene 全文检索系统:Java 源码与信息检索技术详解** Lucene 是一个高度可定制的全文检索库,由 Apache 软件基金会维护,它为开发人员提供了一个强大的工具来构建搜索功能。这个压缩包包含了 Lucene 的 Java ...
### Lucene基于Java的全文检索引擎简介 #### 一、Lucene概述与历史背景 Lucene是一个基于Java的全文检索引擎工具包,旨在为各种规模的应用程序提供强大的文本搜索功能。该工具包由Doug Cutting创建,他是全文检索...
基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源代码检索系统 JCite.zip 基于java的开发源码-源...