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