該程式庫可在瀏覽器中啟用全功能搜尋索引,並在 Runbox 7 中用於搜尋電子郵件,而無需與伺服器互動。
它基於 Xapian,Xapian 是一個用 C 編寫的開源搜尋引擎庫。
透過針對 WebAssembly,我們也可以在有 Nodejs 的伺服器上使用相同的程式碼。我們不需要為不同的作業系統建立單獨的版本。此外,由於它在 Javascript 沙箱內運行,我們可以受益於它附帶的安全功能。我們相信這比本機構建更安全、更便攜,而且在性能方面不會損失太多。相反,與使用傳統的腳本語言綁定到 C 庫相比,我們已經看到,透過與 WebAssembly 附帶的 Javascript 運行時緊密整合,開發效率甚至效能都得到了提高。
在瀏覽器中擁有搜尋索引當然不適用於整個網路的搜尋引擎,但對於電子郵件帳戶來說,搜尋索引可以容納在瀏覽器本機儲存引擎(例如 IndexedDB)中的資料量有限,甚至可以在使用時的內存。
在瀏覽器中而不是在伺服器上建立搜尋索引有幾個好處。首先,它提高了速度,因為您無需將查詢和結果發送到伺服器。您可以在鍵入時立即返回完整的搜尋結果,並且在排序和計算點擊次數時可以提供更多功能。對於用戶來說,這意味著您可以更有效地調整查詢,因為您可以獲得如此即時的結果。另一個好處是沒有伺服器會監視您正在搜尋的內容,這有利於隱私。您也可以在離線時(沒有網路連線)搜尋您的內容。如果使用者甚至具有編碼技能,則可以完全存取搜尋索引和與其互動的庫,從而為索引的自訂處理提供了可能性。在電子郵件場景中,這可能是從智慧搜尋到監視和警報的一切。
仍然存在您不想下載搜尋索引,而想使用伺服器進行搜尋的情況。一種情況可能是使用不屬於您自己的設備時。以 WebAssembly 為目標,可以在伺服器上重複使用相同的程式碼,以提供與瀏覽器相同的 API。
現代 Web 應用程式越來越多地使用瀏覽器本地儲存來進行快取、儲存設定、內容等。這為我們提供了更好的效能甚至離線功能,但也需要更多地了解我們使用的瀏覽器和設備。當不使用自己的私人裝置時,您應該使用私人瀏覽,以便該裝置上不會儲存任何內容。此外,對於您的私人設備,您應該考慮使用提供加密檔案系統的作業系統。
該專案依賴 https://github.com/xapian/xapian 並且您已使用 Emscripten 構建了它,如下所示:
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
為了建立 Web 組件二進位文件,您必須將XAPIAN
環境變數設定為 Xapian emscripten 建置的xapian_core
資料夾的位置。
然後,您可以使用XAPIAN=xapian_core_location npm run build
來建構它
您也可以查看 .travis.yml 檔案以取得完整的建置和測試過程(在每次推送時執行)。
npm run test