MiniSearch - Volltextsuche mit minimalem Overhead
MiniSearch ist eine JavaScript-Bibliothek, die client- und serverseitige Volltextsuche ermöglicht, indem sie einen invertierten Index im Arbeitsspeicher des Browsers oder Node.js-Servers aufbaut. Der Index wird vollständig im Arbeitsspeicher gehalten, wodurch die Datenmenge, die durchsucht werden kann, begrenzt ist. Auch wird der Index beim Starten immer neu aufgebaut, was für größere Mengen an Daten nicht ideal ist. Bei Versuchen mit ca. 6 MB an Daten hat der Aufbau des Index nur ca. 860 ms gedauert. Eine Fuzzy-Suche war meist in unter einer ms durchgeführt.
MiniSearch ist eine reine JavaScript-Bibliothek ohne externe Abhängigkeiten. Dadurch ist sie auch ideal, wenn ein kleines serverseitiges Projekt mit einer Volltextsuche ausgestattet werden muss, wo Solr oder auch schon Meilisearch viel Overhead benötigen. MiniSearch hingegen kann direkt eingebunden und verwendet werden. Auch die Nutzung im Browser in einer PWA ist ideal.
Die Kernfunktionalität von MiniSearch basiert auf einem Radix Tree (einem platzoptimierten Präfixbaum) für den invertierten Index. Dieser Ansatz macht die Indexierung und Suche nicht nur schnell, sondern auch besonders speichereffizient, was für mobile Browser entscheidend ist.
Es ist möglich, Dokumente zur Laufzeit hinzuzufügen und zu entfernen. Die Bibliothek bietet erweiterte Suchfunktionen wie Präfix-Suche, Fuzzy-Suche für Tippfehler und Field Boosting zur Gewichtung von Feldern, sodass Treffer in Titelfeldern höher bewertet werden können als z.B. in der Beschreibung. MiniSearch bietet viele Funktionen, die man bei einer so kleinen Suche nicht erwarten würde. So generiert Die Auto-Suggestion-Funktionalität Vorschläge direkt aus den indizierten Dokumenten und sortiert sie nach Relevanz.
Im Vergleich zu schwergewichtigen Lösungen wie Solr oder Meilisearch punktet MiniSearch durch minimalen Overhead. Während diese serverbasierten Lösungen erhebliche Ressourcen benötigen, kann MiniSearch direkt im Anwendungsprozess operieren.