1. 程式人生 > >對服務器上所有Word文件做全文檢索的解決方案-Java

對服務器上所有Word文件做全文檢索的解決方案-Java

不可 servlet 並保存 保存文件 客戶端請求 打開文檔 word文檔 文件的 文本文件

一、背景介紹
Word文檔與日常辦公密不可分,在實際應用中,當某一文檔服務器中有很多Word文檔,假如有成千上萬個文檔時,用戶查找打開包含某些指定關鍵字的文檔就變得很困難,目前這一問題沒有好的解決方案,我個人能想到的解決方案是使用服務器端的Apache poi技術將所有文檔的文本獲取後存儲到數據庫,然後打開文檔時利用sql語句檢索文檔是否包含關鍵字來判斷是否是打開文檔。但是這種解決辦法有很大的弊端,首先poi技術對word文檔支持不是很好,其中支持word的接口單一而且不太穩定,對word文檔的格式也要求很高。其次如果將成千上萬個文檔使用poi將其文本內容存儲到數據庫這一操作將會在很大程度上影響服務器的性能。PageOffice提供了獲取Word文檔全文純文本內容的屬性接口,可以把整個word文件的純文本內容保存到數據庫,利用數據庫sql語句檢索文檔是否包含關鍵字來實現這一需求。

二、主要實現代碼

保存文件的同時獲取Word文檔中的純文本文件並保存到數據庫,因為每次保存word文件,數據庫中都同步保存了word文件中的純文本內容,所以只需對數據庫中的文本內容做SQL查詢即可實現對服務器上所有Word文件做全文檢索。

FileSaver fs = new FileSaver(request, response);  
String strDocumentText = fs.getDocumentText();  // 您可以把此文本字符串保存到數據庫字段。保存到數據庫的代碼此處省略  
fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") +   "/" + fs.getFileName());  
fs.Close();

三、此方案優勢

PageOffice獲取全文的純文本文檔是客戶端執行的,這樣就在很大程度上減輕了對服務器的壓力,提高了服務器對客戶端請求的響應速度。

對服務器上所有Word文件做全文檢索的解決方案-Java