企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **Word文档全文检索** ### **一、 背景介绍** Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,目前网络上能找到的解决方案多是使用服务器端的Apache POI技术将所有文档的文本获取后存储到数据库,然后打开文档时利用sql语句检索文档是否包含关键字来判断是否是打开文档。但是这种解决办法有很大的弊端,首先POI技术对word文档支持不是很好,其中支持word的接口单一而且不太稳定,对word文档的格式也要求很高。其次如果将成千上万个文档使用poi将其文本内容存储到数据库这一操作将会在很大程度上影响服务器的性能。 PageOffice提供了获取Word文档全文纯文本的功能,可以把获取到的文本内容保存到数据库,利用数据库sql语句检索文档是否包含关键字来实现这一需求。PageOffice获取文档纯文本的工作是客户端执行的,这样就在很大程度上减轻了对服务器的压力,提高了服务器的性能。 ### **二、主要实现代码** 获取Word文档中的纯文本文件(不带任何附加格式)并保存到数据库,以后就可以简单的利用SQL查询轻松实现文档管理中的全文检索功能。 Java代码: ~~~ FileSaver fs = new FileSaver(request, response); String strDocumentText = fs.getDocumentText(); // 您可以把此文本字符串保存到数据库字段。保存到数据库的代码此处省略 fs.saveToFile(request.getRealPath("doc/") + "/" + fs.getFileName()); fs.Close(); ~~~ ASP.NET代码: ~~~ PageOffice.FileSaver fs = new PageOffice.FileSaver(); string strDocumentText = fs.DocumentText; // 您可以把此文本字符串保存到数据库字段。保存到数据库的代码此处省略 fs.SaveToFile(Server.MapPath("doc/") + fs.FileName); fs.Close(); ~~~ >[danger]注意:此属性目前仅适用于Word。 ### **三、示例说明** >[info]请参考PageOffice开发包中Samples4示例的综合演示: >三、全文搜索包含关键字的Word文档(专业版、企业版) 获取文档中的纯文本保存到数据库,根据关键字检索文档中是否包含该关键字。 1) 数据库中的文档的存储结构说明(以access数据库为例)。 ![144](https://box.kancloud.cn/de1db689915c0acb8804335078082850_1872x681.png) 2) 搜索包含关键字的文档,以列表显示文档名。 ![145](https://box.kancloud.cn/b2524cfd4093a44fc334bc0cc4a59720_1357x719.png) 3) 打开编辑包含关键字的文档,并且高亮显示关键字。 ![146](https://box.kancloud.cn/aec49c279c7bfd10d8bd266950185d25_1154x732.png) 高亮显示的主要js代码: ~~~js var sMac = "function myfunc()" + "\r\n" + " Application.Selection.HomeKey(6) \r\n" + " Application.Selection.Find.ClearFormatting \r\n" + " Application.Selection.Find.Replacement.ClearFormatting \r\n" + " Application.Selection.Find.Text = \"" + key + "\" \r\n" + " While (Application.Selection.Find.Execute()) \r\n" + " If (" + visible + ") Then \r\n" + " Application.Selection.Range.HighlightColorIndex = 7 \r\n" + " Else \r\n" + " Application.Selection.Range.HighlightColorIndex = 0 \r\n" + " End If \r\n" + " Wend \r\n" + " Application.Selection.HomeKey(6) \r\n" + "End function"; document.getElementById("PageOfficeCtrl1").RunMacro("myfunc", sMac); ~~~