首页 > 其他分享 >PageOffice6 实现 word 全文检索

PageOffice6 实现 word 全文检索

时间:2024-04-07 14:56:15浏览次数:23  
标签:pageofficectrl word 数据库 全文检索 PageOffice6 fs 文档 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全文检索

标签:pageofficectrl,word,数据库,全文检索,PageOffice6,fs,文档,Word
From: https://www.cnblogs.com/qq742655/p/18119041

相关文章

  • 使用POI填充Word文档,一些注意事项以及解决办法
    有这样一个需求:需要将用户输入的数据填写到准备好的Word模版中并提供下载,最终选择POI-tl和POI来完成上述需求。在这个过程中,主要遇到了以下两个问题:1.Word的两个格式doc和docx(两种文件的区别大家可以自行百度了解下),POI并没有提供统一的处理类。分别用HWPFDocument处理doc......
  • Word中字体间距变大且无法修改字体
    Word中字体间距变大且无法修改字体问题描述今天在Word中写文档的时候不知怎么触发了输入法全角半角设置快捷键,在Word中输入的英文字体间距很大,起初我以为是字体问题,然而修改字体后无任何变化,仔细研究一番后注意到输入法英文状态下为全角输入,这才找到问题所在,如下图所示全......
  • CF1200E Compress Words 题解
    题目链接:CF或者洛谷注意到总字符串长度不超过\(1e6\),对于两个串之间找前后缀匹配,只要能暴力枚举长度,\(check\为\O(1)\),那么最后显然线性复杂度。可以考虑\(kmp\),也可以考虑字符串哈希,最好上双哈希,然后拼串显然是在尾部继续添加新的前缀哈希,这个需要添加的串可以单独由匹配......
  • Ueditor富文本回显word文档(doc和docx格式都支持)进行二次编辑,springboot后端
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档vue+ueditor+springboot,实现word文档上传编辑前言`前端导入word文档(doc和docx格式都支持),Ueditor富文本回显进行二次编辑,目前ueditor项目archived了,实现两种格式的相关材料相对稀缺。解决思路:1.上传word......
  • 单词 Play on Words
    原题链接题解我们将一个单词的首字母和尾字母看成两个结点,每个单词代表一条有向边。此时题意为:给你一个有向图,让你找到一条路径,使得仅仅只经过每条边一次。那么题意就是让我们求一个有向图的欧拉回路。code #include<bits/stdc++.h>usingnamespacestd;intfather[30]......
  • 全能Office插件——不坑盒子,自动排版、阅读模式、Word中表格填充序号、发票读取、绿膜
    不坑盒子2024.0404版,带着21项变动,来了~本文可能略长,还有很多视频和动图,请一定要耐心看完;或许,真的能改变你的工作方式。自动排版2024(Word)自去年“新自动排版”上线后,一定饱受争议,有人骂它太卡、匹配不完美;有人夸它灵活、更自由。核心变化这个版本“自动排版”功能的核心已......
  • P3435 [POI2006] OKR-Periods of Words
    原题链接题解1.Q是S的前缀2.Q!=S3.S是QQ的前缀,且S可以等于QQ4.从S中挖掉Q后剩下的部分与Q(s)的前半部分重合,也就是公共前后缀5.要让Q尽可能长,就要让公共前后缀尽可能短(非零)细节请看代码解答一些疑惑:为什么不能直接求最短公共前后缀,而是要先求最大公共前后缀?code#include<b......
  • (某网站)评论爬虫+wordcloud可视化
    目录一、序二、没变化的三、没怎么变的四、全牛魔变了的五、全代码六、后记,但没完全后记七,词云图一、序打正大杯的时候,需要面向女性群体的信息收集,当时想到爬xhs相关笔记评论的数据本着面向csdn编程的心态,蒟蒻在csdn上狂搜各类“某网站爬虫”,什么“某网站 爬虫”,......
  • 第十一篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操
    传奇开心果博文系列系列博文目录Python自动化办公库技术点案例示例系列博文目录前言一、重要作用二、Python操作PDF文件转Word文档介绍三、提高效率示例代码四、保持一致性示例代码五、精确度与质量控制示例代码六、适应复杂需求示例代码七、可扩展性与与集成性示例代码......
  • 自然语言处理基础知识入门(二) Word2vec模型,层次softmax,负采样算法详解
    文章目录前言一、Word2vec模型1.1什么是Word2vec模型?1.2Word2vec模型是如何训练?1.3Word2vec最简单版本整体过程1.4Word2vec详细过程1.5CBOW整体过程1.6Skip-gram整体过程二、优化算法2.1层次softmax2.1.1哈夫曼树2.1.2算法详细逻辑2.2负采样策略总结......