在文档服务器中存储有成千上万个文档的情况下,用户想要找到并打开包含特定关键字的文档,无疑是一项艰巨的任务。如何高效地管理和检索大量的Word文档呢?

在现有的技术解决方案中,许多方法都依赖于服务器端的Apache POI技术。这种技术的基本原理是,先将所有文档的文本内容提取出来,然后存储到数据库中。当用户需要打开文档时,系统会通过SQL语句检索数据库,判断文档是否包含用户指定的关键字。然而,这种解决方案存在明显的弊端。首先,POI技术对Word文档的支持并不完善,其提供的接口较为单一且稳定性不足,对文档格式的严格要求也增加了使用的难度。其次,将成千上万个文档的文本内容提取并存储到数据库中,这一操作本身就会对服务器的性能产生巨大的压力,影响服务器的正常运行。

PageOffice提供了一种新的解决方案。它能够在每次保存文件的时候获取Word文档的全文纯文本内容,并将其保存到数据库中。这样,当用户需要检索包含特定关键字的文档时,就可以直接通过数据库的SQL语句来实现。更为重要的是,PageOffice的这一功能是在客户端执行的,也就是说,它将文档的处理工作量从服务器端转移到了客户端,极大地减轻了服务器的负担,既能够满足用户对于文档检索的需求,又能够保证服务器的稳定运行。

后端代码

每次保存文档的同时,获取Word文档中的纯文本字符串并保存到数据库,以后就可以简单的利用SQL查询轻松实现文档管理中的全文检索功能。

  FileSaver fs = new FileSaver(request, response);
String strDocumentText = fs.getDocumentText();
// 您可以把strDocumentText保存到数据库字段。保存到数据库的代码此处省略
fs.saveToFile(request.getRealPath("doc/" + fs.getFileName()));
fs.close();

前端代码

在线打开Word文件之后,可以使用下面的SetKeyWord函数,设置Word文件中的所有的关键字高亮显示。


function SetKeyWord(key,visible) {
if (key == "null" || "" == key) {
alert("关键字为空。");
return;
}
let falg = true;
pageofficectrl.word.HomeKey(6);
while(falg){
if(pageofficectrl.word.FindNextText(key)){
if(visible){
pageofficectrl.word.SetHighlightToSelection(7);//高亮显示
}else{
pageofficectrl.word.SetHighlightToSelection(0);//取消高亮
}
}else{
pageofficectrl.word.HomeKey(6)
break;
}
}
}

参考链接:Word全文检索

PageOffice6 实现 word 全文检索的更多相关文章

  1. jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...

  2. [转载] Java开发在线编辑Word同时实现全文检索

    一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...

  3. [原创]Java开发在线编辑Word同时实现全文检索

    一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...

  4. 对服务器上所有Word文件做全文检索的解决方案-Java

    一.背景介绍    Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,目前这一问题没有好的解 ...

  5. lucene 实现word,pdf全文检索源码

    创建索引: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import jav ...

  6. Apache Lucene(全文检索引擎)—分词器

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...

  7. 全文检索引擎 Solr 部署与基本原理

    全文检索引擎 Solr 部署与基本原理 搜索引擎Solr环境搭建实例 关于 solr , schema.xml 的配置说明 全文检索引擎Solr系列-–全文检索基本原理 一.搜索引擎Solr环境搭建实 ...

  8. PostgreSQL全文检索zhparser使用

    本文引用自: http://blog.chinaunix.net/uid-20726500-id-4820580.html 防止文章丢失才进行复制 PostgreSQL支持全文检索,其内置的缺省的分词 ...

  9. [全文检索]Lucene基础入门.

    本打算直接来学习Solr, 现在先把Lucene的只是捋一遍. 本文内容: 1. 搜索引擎的发展史 2. Lucene入门 3. Lucene的API详解 4. 索引调优 5. Lucene搜索结果排 ...

  10. PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))

    PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...

随机推荐

  1. 今晚战码先锋润和赛道第2期直播丨如何参与OpenHarmony代码贡献

    「OpenHarmony 开源贡献者计划 2022」战"码"先锋 PR 征集,"润和赛道"已于6月15日正式开启.套件在手.先机在握,更有润和软件的超多赋能和专 ...

  2. Avalonia的自定义用户组件

    Avalonia中的自定义用户控件 Avalonia是一个跨平台的.NET UI框架,它允许开发者使用C#和XAML来构建丰富的桌面应用程序. 自定义用户控件(UserControl)是Avaloni ...

  3. 国产化改造就用 Java Solon,v2.7.3 发布

    Java Solon 是什么框架? 是一个可平替 Spring 生态的 Java 应用开发框架.从零开始构建(非 java-ee 架构),有自己的标准规范与开放生态.(历时七年,具备全球第二级别的生态 ...

  4. 容器开发运维人员的 Linux 操作机配置优化建议

    "工欲善其事必先利其器", 作为一个PAAS平台架构师, 容器相关技术(docker, k8s等)是必不可少的. 本文简单介绍下我自己的Linux操作机配置. 提升工作效率, 提高 ...

  5. 多线程-多个子线程执行结果插入List集合

    业务场景:将多个子线程的执行结果存入List,但是总会出现List集合的长度小于子线程的执行数的情况 1.错误示例(多个线程同时操作同一个List对象,List是线程不安全) package unit ...

  6. vue3探索——组件通信之v-model父子组件数据同步

    背景 再很多场景中,我们可能想在子组件中修改父组件的数据,但事实上,vue不推荐我们这么做,因为数据的修改不容易溯源. Vue2写法 在vue2中,我们使用.sync修饰符+自定义事件'update: ...

  7. HH的项链—树状数组

    题目描述 HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义. HH不断地收集新的贝壳,因此他的项链变得越来越长.有一天 ...

  8. python 虚拟环境篇

    前言 这个倒是非常之重要. 首先我们知道python通过pip安装,那么我们安装的所有东西都会在我们pip下的配置目录下,这会显得非常臃肿,同样也让我们部署艰难. python虚拟环境,他是这样做的, ...

  9. 使用WebApi+Vue3从0到1搭建《权限管理系统》:二、搭建JWT系统鉴权

    视频地址:[WebApi+Vue3从0到1搭建<权限管理系统>系列视频:搭建JWT系统鉴权-哔哩哔哩] https://b23.tv/R6cOcDO qq群:801913255 一.在ap ...

  10. 《Effective C#》系列之(二)——如何使代码易于阅读和理解

    在<Effective C#>这本书中,使代码更易于阅读和理解是其中一章的主要内容.以下是该章节的一些核心建议: 使用清晰.有意义的名称:变量.方法.类型等的名称应该能够准确地描述其含义, ...