1. 程式人生 > >使用PageOffice--Word文件全文檢索

使用PageOffice--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();

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

三、示例說明

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

獲取文件中的純文字儲存到資料庫,根據關鍵字檢索文件中是否包含該關鍵字。

  1. 資料庫中的文件的儲存結構說明(以access資料庫為例)。144

  2. 搜尋包含關鍵字的文件,以列表顯示文件名。145

  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);