使用卓正PageOffice--Word文檔全文檢索

1、 背景介紹

Word文檔與平常辦公密不可分,在實際應用中,當某一文檔服務器中有不少Word文檔,假若有成千上萬個文檔時,用戶查找打開包含某些指定關鍵字的文檔就變得很困難,目前網絡上能找到的解決方案可能是使用服務器端的Apache POI技術將全部文檔的文本獲取後存儲到數據庫,而後打開文檔時利用sql語句檢索文檔是否包含關鍵字來判斷是不是打開文檔。可是這種解決辦法有很大的弊端,首先POI技術對word文檔支持不是很好,其中支持word的接口單一併且不太穩定,對word文檔的格式也要求很高。其次若是將成千上萬個文檔使用poi將其文本內容存儲到數據庫這一操做將會在很大程度上影響服務器的性能。sql

PageOffice提供了獲取Word文檔全文純文本的功能,能夠把獲取到的文本內容保存到數據庫,利用數據庫sql語句檢索文檔是否包含關鍵字來實現這一需求。PageOffice獲取文檔純文本的工做是客戶端執行的,這樣就在很大程度上減輕了對服務器的壓力,提升了服務器的性能。數據庫

2、主要實現代碼

獲取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();

注意:此屬性目前僅適用於Word。spa

3、示例說明

請參考PageOffice開發包中Samples4示例的綜合演示:
3、全文搜索包含關鍵字的Word文檔(專業版、企業版)3d

獲取文檔中的純文本保存到數據庫,根據關鍵字檢索文檔中是否包含該關鍵字。code

  1. 數據庫中的文檔的存儲結構說明(以access數據庫爲例)。
    144orm

  2. 搜索包含關鍵字的文檔,以列表顯示文檔名。
    145blog

  3. 打開編輯包含關鍵字的文檔,而且高亮顯示關鍵字。
    146
    高亮顯示的主要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);
相關文章
相關標籤/搜索