PageOffice6 實現 word 全文檢索

在文檔服務器中存儲有成千上萬個文檔的情況下,用戶想要找到並打開包含特定關鍵字的文檔,無疑是一項艱鉅的任務。如何高效地管理和檢索大量的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全文檢索

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章