PageOffice6 实现 word 全文检索
在文档服务器中存储有成千上万个文档的情况下,用户想要找到并打开包含特定关键字的文档,无疑是一项艰巨的任务。如何高效地管理和检索大量的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 全文检索的更多相关文章
- jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...
- [转载] Java开发在线编辑Word同时实现全文检索
一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...
- [原创]Java开发在线编辑Word同时实现全文检索
一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...
- 对服务器上所有Word文件做全文检索的解决方案-Java
一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,目前这一问题没有好的解 ...
- lucene 实现word,pdf全文检索源码
创建索引: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import jav ...
- Apache Lucene(全文检索引擎)—分词器
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...
- 全文检索引擎 Solr 部署与基本原理
全文检索引擎 Solr 部署与基本原理 搜索引擎Solr环境搭建实例 关于 solr , schema.xml 的配置说明 全文检索引擎Solr系列-–全文检索基本原理 一.搜索引擎Solr环境搭建实 ...
- PostgreSQL全文检索zhparser使用
本文引用自: http://blog.chinaunix.net/uid-20726500-id-4820580.html 防止文章丢失才进行复制 PostgreSQL支持全文检索,其内置的缺省的分词 ...
- [全文检索]Lucene基础入门.
本打算直接来学习Solr, 现在先把Lucene的只是捋一遍. 本文内容: 1. 搜索引擎的发展史 2. Lucene入门 3. Lucene的API详解 4. 索引调优 5. Lucene搜索结果排 ...
- PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))
PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a) robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...
随机推荐
- #Dijkstra,二进制拆位#洛谷 5304 [GXOI/GZOI2019]旅行者
题目 分析(\(logk\)次Dijkstra) 首先为什么\(O(nklogn)\)的多次\(dijkstra\)为什么会TLE, 因为中间有许多的冗余状态,即使两点求出的路径是最短的,它也不一定是 ...
- 难道AI不知道tnsnames.ora的instance_name配置吗?
事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境: 数据库是单实例,版本19.21,使用了多租户选件: 其中一个测试的PDB,名为demo1,其中建 ...
- 机器学习&深度学习 操作tips
1. 在运行程序时,报错如下: usage: run.py [-h] --model MODEL [--embedding EMBEDDING] [--word WORD] run.py: error ...
- UE4下实现HTC Vive手柄拾取物品蓝图编程
UE4下实现Vive手柄拾取物品 标签: UE4Vive游戏引擎 目录(?) [-] 创建拾取接口 实现接口 定义拾取 简单说下思路,首先定义拾取接口,然后在需要拾取的物品的蓝图类中实现该接口,最后在 ...
- 老夫当年手写的js动画库
前言 当年我学习js的时候,那时候学生时代不知道有jquery,所以手写了一些东西,留下的不多作为回忆. 正文 ``` javascript window.onload = function () { ...
- MVC 下拉选项实现的几种方式
主要介绍4种方式 硬编码方式: ViewBag.hard_value = new List<SelectListItem>() { new SelectListItem(){Value=& ...
- 第五章-for循环的练习
/* * @Issue: 每个苹果0.8元,第一天买两个苹果,从第二天开始,每天买前一天的两倍,直至购买的苹果数量 * 个数达到不超过100的最大值,编写程序求每天平均花多少钱. * @Author: ...
- 【Windbg Preview】Failed to load data access DLL, 0x80004005
最近使用Windbg的时候一直在用Preview版本,感觉解析一下就能直接加载起环境来太爽了.不过最近遇到一个dump加载不起来了. 但是最近一次加载却失败了,尝试了很久也不行 Failed to l ...
- 【Oracle笔记】递归以及索引的一丢丢使用
[笔记]递归以及索引的一丢丢使用 递归写法,树查询 connect by nocycle prior START WITH XXX CONNECT BY PRIOR XXX ORDER BY XXX ...
- 力扣162(java&python)-寻找峰值(中等)
题目: 峰值元素是指其值严格大于左右相邻值的元素. 给你一个整数数组 nums,找到峰值元素并返回其索引.数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可. 你可以假设 nums[ ...