# krisk/fuse

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/krisk-fuse).**

20,347 stars · 809 forks · JavaScript · Apache-2.0

## Links

- GitHub: https://github.com/krisk/Fuse
- Homepage: https://fusejs.io/
- awesome-repositories: https://awesome-repositories.com/repository/krisk-fuse.md

## Topics

`bitap` `javascript` `lightweight-fuzzy-search` `weighted-search`

## Description

Fuse is a JavaScript fuzzy search library and client-side search engine designed to index and query JSON data. It provides utilities for approximate string matching and ranking results by relevance, allowing applications to perform fast filtering and searching of datasets without a dedicated backend.

The library distinguishes itself through a token-based search implementation that supports word-order independence and relevance weighting. It utilizes edit-distance scoring to handle typos and insertions, and employs a system of field weighting to prioritize matches in high-value data keys.

The project covers a broad range of search and indexing capabilities, including boolean-logic query parsing, nested data traversal via path notation, and character-level match indexing for visual highlighting. It also includes performance features such as index caching and worker-thread parallelization to process large datasets without blocking the main thread.

## Tags

### Data & Databases

- [Fuzzy Search Engines](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/fuzzy-search-engines.md) — Provides a fuzzy search engine that splits multi-word queries into tokens and ranks results by term frequency. ([source](https://fusejs.io/token-search.html))
- [Field Weighting](https://awesome-repositories.com/f/data-databases/field-weighting.md) — Assigns importance levels to different data keys to prioritize matches in high-value fields during sorting.
- [JSON Path Searching](https://awesome-repositories.com/f/data-databases/json-document-stores/json-search-indices/json-path-searching.md) — Implements searching for nested objects and arrays in JSON using path notation and weighted scoring.
- [Nested Data Search Tools](https://awesome-repositories.com/f/data-databases/nested-data-search-tools.md) — Enables locating matches within deeply nested JSON objects or arrays using path notation. ([source](https://fusejs.io/))
- [Query Tokenization](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/query-interfaces-dsls/multi-term-search-processors/term-matching-queries/query-tokenization.md) — Splits multi-word queries into independent terms using regular expressions to support word-order independent matching.
- [Token-Based Matching Systems](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/query-interfaces-dsls/multi-term-search-processors/token-based-matching-systems.md) — Splits queries into individual terms to support word-order independence and relevance weighting.
- [Index Serialization](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/specialized-storage-engines/inverted-index-engines/index-serialization.md) — Builds a searchable representation of data that can be serialized and cached for reuse across sessions.
- [Logical Search Operators](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/query-interfaces-dsls/logical-search-operators.md) — Supports advanced query syntax using specialized operators for exact, prefix, and inverse matches. ([source](https://fusejs.io/extended-search.html))
- [Complex Search Querying](https://awesome-repositories.com/f/data-databases/search-indexing/complex-search-querying.md) — Enables complex filtering of JSON datasets using boolean operators and logical query patterns.
- [Similarity Thresholds](https://awesome-repositories.com/f/data-databases/vector-similarity-search/similarity-thresholds.md) — Excludes matches that exceed a specific similarity score threshold to balance precision and fuzziness. ([source](https://fusejs.io/articles/how-fuzzy-search-works.html))

### Web Development

- [Client-Side Search Engines](https://awesome-repositories.com/f/web-development/client-side-search-engines.md) — Provides a complete client-side search engine for indexing and querying JSON data within the browser.
- [Fuzzy Search Libraries](https://awesome-repositories.com/f/web-development/fuzzy-search-libraries.md) — Provides a lightweight JavaScript library for approximate string matching and relevance-based ranking.
- [Parallel Processing Workers](https://awesome-repositories.com/f/web-development/parallel-processing-workers.md) — Uses background workers to process search tasks, preventing the browser's main thread from freezing. ([source](https://fusejs.io/web-workers.html))

### Programming Languages & Runtimes

- [Edit Distance Calculators](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/string-utilities/string-manipulators/edit-distance-calculators.md) — Uses edit distance calculations to determine the similarity between a query and a target string.
- [Tokenizers](https://awesome-repositories.com/f/programming-languages-runtimes/regular-expression-engines/tokenizers.md) — Defines how text is split into tokens using regular expressions or locale-aware functions. ([source](https://fusejs.io/token-search.html))

### Software Engineering & Architecture

- [Edit Distance Matchers](https://awesome-repositories.com/f/software-engineering-architecture/string-matching-algorithms/approximate-matching-tools/edit-distance-matchers.md) — Provides an approximate string matching utility based on edit distance to handle typos.
- [Approximate String Searching](https://awesome-repositories.com/f/software-engineering-architecture/string-matching-algorithms/approximate-string-searching.md) — Implements fuzzy matching that tolerates typos and character insertions by calculating edit distance. ([source](https://fusejs.io/articles/how-fuzzy-search-works.html))
- [Boolean Predicate Parsing](https://awesome-repositories.com/f/software-engineering-architecture/boolean-predicates/boolean-predicate-parsing.md) — Implements parsing of boolean expressions to require or exclude specific text matches in queries.
- [Query Path Traversals](https://awesome-repositories.com/f/software-engineering-architecture/object-property-inspectors/property-extraction-validation/nested-property-extractors/query-path-traversals.md) — Allows locating matches within deeply nested objects or arrays using path notation.
- [Worker Thread Patterns](https://awesome-repositories.com/f/software-engineering-architecture/worker-thread-patterns.md) — Distributes search tasks across background worker threads to maintain main-thread responsiveness.

### User Interface & Experience

- [Field Weighting](https://awesome-repositories.com/f/user-interface-experience/search-result-ranking/field-weighting.md) — Assigns importance levels to different data fields to prioritize matches in high-value keys. ([source](https://cdn.jsdelivr.net/gh/krisk/fuse@main/README.md))
- [Relevance Scoring](https://awesome-repositories.com/f/user-interface-experience/search-result-ranking/relevance-scoring.md) — Calculates relevance scores based on field weights and similarity to order search results.
- [Word-Order Independent Execution](https://awesome-repositories.com/f/user-interface-experience/search-result-ranking/word-order-independent-execution.md) — Splits multi-word queries into independent terms to ensure search results are word-order independent. ([source](https://cdn.jsdelivr.net/gh/krisk/fuse@main/README.md))
- [Term Matching Configurations](https://awesome-repositories.com/f/user-interface-experience/matching-logic/term-matching-configurations.md) — Allows configuring whether a record must match all query terms or any single term. ([source](https://fusejs.io/token-search.html))
- [Text Highlighting Utilities](https://awesome-repositories.com/f/user-interface-experience/text-highlighting-utilities.md) — Identifies character positions of matches to enable visual styling and highlighting of found text.

### Development Tools & Productivity

- [Match Position Mapping](https://awesome-repositories.com/f/development-tools-productivity/character-level-text-processing/match-position-mapping.md) — Tracks exact character positions of matches to enable precise visual highlighting in the UI.
