ไลบรารีนี้เปิดใช้งานดัชนีการค้นหาที่มีคุณสมบัติครบถ้วนในเบราว์เซอร์ของคุณ และใช้ใน Runbox 7 เพื่อค้นหาอีเมลโดยไม่ต้องโต้ตอบกับเซิร์ฟเวอร์
มีพื้นฐานมาจาก Xapian ซึ่งเป็นไลบรารี่ของเสิร์ชเอ็นจิ้นโอเพ่นซอร์สที่เขียนด้วยภาษา C ด้วยการคอมไพล์ Xapian ด้วยคอมไพเลอร์ Emscripten เราจึงสามารถสร้างไลบรารี่นี้สำหรับ WebAssembly ซึ่งทำงานในเบราว์เซอร์สมัยใหม่
ด้วยการกำหนดเป้าหมาย WebAssembly เราจึงสามารถใช้โค้ดเดียวกันบนเซิร์ฟเวอร์ที่มี nodejs ได้ เราไม่จำเป็นต้องสร้างบิลด์แยกต่างหากสำหรับระบบปฏิบัติการที่แตกต่างกัน นอกจากนี้ เนื่องจากมันทำงานภายในแซนด์บ็อกซ์ Javascript เราจึงสามารถได้รับประโยชน์จากคุณสมบัติความปลอดภัยที่มาพร้อมกับมัน เราเชื่อว่าสิ่งนี้ปลอดภัยกว่าและพกพาสะดวกกว่าบิลด์แบบเนทีฟ โดยไม่สูญเสียประสิทธิภาพมากนัก แต่เราเห็นว่าเพิ่มประสิทธิภาพในการพัฒนาและแม้กระทั่งประสิทธิภาพที่เพิ่มขึ้นจากการบูรณาการอย่างแน่นหนากับรันไทม์ Javascript ที่มาพร้อมกับ WebAssembly เมื่อเปรียบเทียบกับการใช้ภาษาสคริปต์แบบดั้งเดิมที่ผูกกับไลบรารี C
แน่นอนว่าการมีดัชนีการค้นหาในเบราว์เซอร์จะไม่ทำงานสำหรับเครื่องมือค้นหาสำหรับทั้งเว็บ แต่สำหรับบัญชีอีเมล มีข้อมูลจำนวนจำกัดที่ดัชนีการค้นหาสามารถใส่ลงในเครื่องมือจัดเก็บข้อมูลในเครื่องของเบราว์เซอร์ เช่น IndexedDB และแม้แต่ใน หน่วยความจำเมื่อใช้งาน
การมีดัชนีการค้นหาในเบราว์เซอร์มีประโยชน์หลายประการมากกว่าบนเซิร์ฟเวอร์ ประการแรกคือความเร็วที่เพิ่มขึ้นเนื่องจากคุณไม่มีการสืบค้นและผลลัพธ์ไปยังเซิร์ฟเวอร์ คุณสามารถส่งคืนผลการค้นหาที่สมบูรณ์ได้ทันทีขณะที่คุณพิมพ์ และคุณสามารถนำเสนอคุณสมบัติเพิ่มเติมในการเรียงลำดับและนับจำนวนการเข้าชม สำหรับผู้ใช้ หมายความว่าคุณสามารถปรับเปลี่ยนข้อความค้นหาของคุณได้อย่างมีประสิทธิภาพมากขึ้น เนื่องจากคุณได้รับผลลัพธ์ทันที ข้อดีอีกประการหนึ่งคือไม่มีเซิร์ฟเวอร์ใดที่จะตรวจสอบสิ่งที่คุณกำลังค้นหา ซึ่งดีต่อความเป็นส่วนตัว คุณยังสามารถค้นหาเนื้อหาของคุณเมื่อออฟไลน์ (โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต) หากผู้ใช้มีทักษะการเขียนโค้ด การมีสิทธิ์เข้าถึงดัชนีการค้นหาและไลบรารีเพื่อโต้ตอบกับดัชนีได้อย่างเต็มที่จะเปิดโอกาสให้ประมวลผลดัชนีแบบกำหนดเองได้ ในสถานการณ์อีเมลที่อาจเป็นได้ทุกอย่างตั้งแต่การค้นหาอัจฉริยะไปจนถึงการเฝ้าระวังและการแจ้งเตือน
ยังมีบางกรณีที่คุณไม่ต้องการดาวน์โหลดดัชนีการค้นหา และคุณต้องการใช้เซิร์ฟเวอร์ในการค้นหา สถานการณ์หนึ่งอาจเป็นเมื่อใช้อุปกรณ์ที่ไม่ใช่ของคุณเอง การกำหนดเป้าหมาย WebAssembly ช่วยให้สามารถใช้รหัสเดียวกันบนเซิร์ฟเวอร์ซ้ำได้เพื่อจัดเตรียม API เดียวกันกับในเบราว์เซอร์
เว็บแอปพลิเคชันสมัยใหม่ใช้พื้นที่จัดเก็บในเครื่องของเบราว์เซอร์มากขึ้นเรื่อยๆ สำหรับแคช การตั้งค่าการจัดเก็บ เนื้อหา และอื่นๆ สิ่งนี้ทำให้เรามีประสิทธิภาพดีขึ้นและแม้แต่ความสามารถแบบออฟไลน์ แต่ยังต้องมีความตระหนักมากขึ้นว่าเบราว์เซอร์และอุปกรณ์ใดที่เราใช้ เมื่อไม่ได้ใช้อุปกรณ์ส่วนตัวของคุณเอง คุณควรใช้การเรียกดูแบบส่วนตัวเพื่อไม่ให้มีการจัดเก็บสิ่งใดไว้ในอุปกรณ์นั้น นอกจากนี้ สำหรับอุปกรณ์ส่วนตัวของคุณ คุณควรพิจารณาใช้ระบบปฏิบัติการที่เสนอระบบไฟล์ที่เข้ารหัส
โปรเจ็กต์นี้ขึ้นอยู่กับhttps://github.com/xapian/xapian และคุณได้สร้างมันโดยใช้ Emscripten ตามที่เขียนไว้ที่นี่:
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
ในการสร้างไบนารีแอสเซมบลีของเว็บ คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อม XAPIAN
เป็นตำแหน่งของโฟลเดอร์ xapian_core
ของบิลด์ Xapian emscripten ของคุณ
จากนั้นคุณสามารถสร้างมันขึ้นมาได้โดยใช้ XAPIAN=xapian_core_location npm run build
คุณยังสามารถดูไฟล์ .travis.yml เพื่อดูขั้นตอนการสร้างและทดสอบที่สมบูรณ์ (ซึ่งทำงานทุกครั้งที่กด)
npm run test