A tiny, in-memory JavaScript full-text search engine for browser and Node with prefix, fuzzy search, and auto-suggestion.
MiniSearch is a tiny, in-memory full-text search engine written in JavaScript that runs in both Node.js and the browser. It provides features like prefix search, fuzzy matching, ranking, and auto-suggestion for datasets that fit locally in memory. It solves the need for fast, client-side search without network latency or external server dependencies.
Frontend and Node.js developers building applications that require client-side or offline full-text search, such as real-time search-as-you-type UIs, mobile apps, or tools with local data indexing.
Developers choose MiniSearch for its minimal footprint, zero dependencies, and powerful search capabilities in resource-constrained environments. It offers a simple API for custom solutions while being efficient enough for mobile browsers and real-time applications.
Tiny and powerful JavaScript full-text search engine for browser and Node
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Has no external dependencies, resulting in a tiny footprint (under 10KB minzipped) as shown on BundlePhobia, simplifying deployment and reducing bundle size.
Supports exact, prefix, and fuzzy matching with configurable field boosting, detailed in the search options examples, enabling tailored search behavior.
Includes an autoSuggest method for query completion that ranks suggestions by relevance, with the same options as search for fuzzy or filtered suggestions.
Runs in both Node.js and browsers with ES9+ support, requiring no polyfills for modern environments, as stated in the compatibility section.
The in-memory index limits dataset size to available RAM, making it unsuitable for large-scale data, a caveat explicitly mentioned in the use case section.
Index is volatile and lost on reload; developers must manually implement serialization and storage, adding complexity for stateful applications.
Lacks out-of-the-box stemming, lemmatization, or advanced tokenization; custom processing via 'processTerm' is required, increasing initial setup effort.