Diese Bibliothek ermöglicht einen Suchindex mit vollem Funktionsumfang in Ihrem Browser und wird in Runbox 7 zum Durchsuchen von E-Mails ohne Interaktion mit einem Server verwendet.
Es basiert auf Xapian, einer in C geschriebenen Open-Source-Suchmaschinenbibliothek. Durch das Kompilieren von Xapian mit dem Emscripten-Compiler können wir diese Bibliothek für WebAssembly erstellen, die in modernen Browsern läuft.
Durch die Ausrichtung auf WebAssembly können wir denselben Code auch auf dem Server mit NodeJS verwenden. Wir müssen keine separaten Builds für verschiedene Betriebssysteme erstellen. Da es außerdem in der Javascript-Sandbox läuft, können wir von den damit verbundenen Sicherheitsfunktionen profitieren. Wir glauben, dass dies sowohl sicherer als auch portabler ist als native Builds, ohne große Leistungseinbußen hinnehmen zu müssen. Vielmehr haben wir durch die enge Integration mit der mit WebAssembly gelieferten Javascript-Laufzeitumgebung im Vergleich zur Verwendung herkömmlicher Skriptsprachenbindungen an C-Bibliotheken eine Steigerung der Entwicklungsproduktivität und sogar der Leistung festgestellt.
Den Suchindex im Browser zu haben, würde natürlich nicht für eine Suchmaschine für das gesamte Web funktionieren, aber für ein E-Mail-Konto gibt es eine begrenzte Datenmenge, bei der der Suchindex in die lokale Speicher-Engine des Browsers wie IndexedDB und sogar in passen könnte Speicher bei Verwendung.
Es gibt mehrere Vorteile, einen Suchindex im Browser statt auf dem Server zu haben. Erstens ist es der Geschwindigkeitsgewinn, da der Roundtrip von Abfragen und Ergebnissen zum Server entfällt. Sie können während der Eingabe sofort vollständige Suchergebnisse anzeigen und weitere Funktionen zum Sortieren und Zählen der Trefferanzahl anbieten. Für den Benutzer bedeutet dies, dass Sie Ihre Abfrage effizienter anpassen können, da Sie so sofortige Ergebnisse erhalten. Ein weiterer Vorteil besteht darin, dass kein Server überwacht, was Sie suchen, was der Privatsphäre zugute kommt. Sie können Ihre Inhalte auch offline durchsuchen (ohne Internetverbindung). Wenn der Benutzer sogar über Programmierkenntnisse verfügt, eröffnet der vollständige Zugriff auf den Suchindex und die Bibliotheken, mit denen er interagieren kann, Möglichkeiten für die benutzerdefinierte Verarbeitung des Index. In einem E-Mail-Szenario könnte das alles sein, von intelligenten Suchen bis hin zu Überwachung und Warnungen.
Dennoch gibt es Fälle, in denen Sie den Suchindex nicht herunterladen möchten und den Server für die Suche verwenden möchten. Ein Szenario könnte sein, wenn Sie ein Gerät verwenden, das nicht Ihr eigenes ist. Durch die Ausrichtung auf WebAssembly ist es möglich, denselben Code auf dem Server wiederzuverwenden, um dieselben APIs wie im Browser bereitzustellen.
Moderne Webanwendungen nutzen immer häufiger den lokalen Speicher des Browsers für den Cache, die Speicherung von Einstellungen, Inhalten und mehr. Dies verschafft uns eine bessere Leistung und sogar Offline-Fähigkeiten, erfordert aber auch ein besseres Bewusstsein darüber, welchen Browser und welches Gerät wir verwenden. Wenn Sie nicht Ihr eigenes privates Gerät verwenden, sollten Sie privates Surfen nutzen, damit nichts auf diesem Gerät gespeichert wird. Auch für Ihre privaten Geräte sollten Sie über den Einsatz eines Betriebssystems nachdenken, das verschlüsselte Dateisysteme bietet.
Dieses Projekt hängt von https://github.com/xapian/xapian ab und davon, dass Sie es mit Emscripten erstellt haben, wie hier beschrieben:
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
Um die Webassembly-Binärdateien zu erstellen, müssen Sie die XAPIAN
Umgebungsvariable auf den Speicherort des xapian_core
Ordners Ihres Xapian-Emscripten-Builds setzen.
Sie können es dann mit XAPIAN=xapian_core_location npm run build
erstellen
Sie können sich auch die Datei .travis.yml ansehen, um einen vollständigen Build- und Testvorgang zu erhalten (der bei jedem Push ausgeführt wird).
npm run test