Pustaka ini mengaktifkan indeks pencarian berfitur lengkap di browser Anda, dan digunakan di Runbox 7 untuk mencari email tanpa berinteraksi dengan server.
Hal ini didasarkan pada Xapian yang merupakan perpustakaan mesin pencari open source yang ditulis dalam C. Dengan mengkompilasi Xapian dengan kompiler Emscripten kita dapat membangun perpustakaan ini untuk WebAssembly yang berjalan di browser modern.
Dengan menargetkan WebAssembly kami juga dapat menggunakan kode yang sama di server dengan nodejs. Kita tidak perlu membuat build terpisah untuk sistem operasi yang berbeda. Juga karena ini berjalan di dalam sandbox Javascript kita bisa mendapatkan keuntungan dari fitur keamanan yang menyertainya. Kami yakin ini lebih aman dan portabel dibandingkan versi asli, tanpa kehilangan banyak performa. Sebaliknya kita telah melihat peningkatan dalam produktivitas pengembangan dan bahkan kinerja melalui integrasi yang erat dengan runtime Javascript yang disertakan dengan WebAssembly, dibandingkan dengan menggunakan pengikatan bahasa skrip tradisional ke perpustakaan C.
Memiliki indeks pencarian di browser tentu saja tidak akan berfungsi untuk mesin pencari di seluruh web, tetapi untuk akun email ada sejumlah data terbatas yang mana indeks pencarian dapat ditampung di mesin penyimpanan lokal browser seperti IndexedDB dan bahkan di memori saat digunakan.
Ada beberapa keuntungan memiliki indeks pencarian di browser dibandingkan di server. Pertama-tama, ini adalah peningkatan kecepatan karena Anda tidak memiliki permintaan dan hasil bolak-balik ke server. Anda dapat mengembalikan hasil pencarian lengkap secara instan saat Anda mengetik, dan Anda dapat menawarkan lebih banyak fitur dalam hal mengurutkan dan menghitung jumlah klik. Bagi pengguna, ini berarti Anda bisa lebih efisien dalam menyesuaikan kueri karena Anda mendapatkan hasil instan. Keuntungan lainnya adalah tidak ada server yang memantau apa yang Anda cari, sehingga baik untuk privasi. Anda juga dapat mencari konten Anda saat offline (tanpa koneksi internet). Jika pengguna bahkan memiliki keterampilan pengkodean, memiliki akses penuh ke indeks pencarian dan perpustakaan untuk berinteraksi dengannya membuka kemungkinan untuk pemrosesan indeks secara khusus. Dalam skenario email yang bisa berupa apa saja, mulai dari penelusuran cerdas hingga pengawasan dan peringatan.
Masih ada kasus di mana Anda tidak ingin mengunduh indeks pencarian, dan Anda ingin menggunakan server untuk pencarian. Salah satu skenario mungkin terjadi ketika menggunakan perangkat yang bukan milik Anda. Menargetkan WebAssembly memungkinkan penggunaan kembali kode yang sama di server untuk menyediakan API yang sama seperti di browser.
Aplikasi web modern semakin banyak menggunakan penyimpanan lokal browser untuk cache, menyimpan pengaturan, konten, dan banyak lagi. Hal ini memberi kami kinerja yang lebih baik dan bahkan kemampuan offline, namun juga memerlukan lebih banyak kesadaran tentang browser dan perangkat apa yang kami gunakan. Saat tidak menggunakan perangkat pribadi Anda, sebaiknya gunakan penjelajahan pribadi agar tidak ada yang tersimpan di perangkat itu. Juga untuk perangkat pribadi Anda, Anda harus mempertimbangkan untuk menggunakan sistem operasi yang menawarkan sistem file terenkripsi.
Proyek ini bergantung pada https://github.com/xapian/xapian dan Anda membuatnya menggunakan Emscripten seperti yang tertulis di sini:
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
Untuk membangun binari perakitan web, Anda harus mengatur variabel lingkungan XAPIAN
ke lokasi folder xapian_core
dari build emscripten Xapian Anda.
Anda kemudian dapat membangunnya menggunakan XAPIAN=xapian_core_location npm run build
Anda juga dapat melihat file .travis.yml untuk prosedur pembuatan dan pengujian lengkap (yang dijalankan pada setiap push).
npm run test