Files
skills/plugins/document-navigator/docs/persistence/search/search/README.md
2026-06-09 21:06:27 +01:00

6.8 KiB

@suaveplan/search - Full-text and fuzzy search primitives with in-memory BM25 engine, trigram fuzzy matching, faceted search, and pagination support

Summary

Full-text and fuzzy search primitives with in-memory BM25 engine, trigram fuzzy matching, faceted search, and pagination support.

Documentation tree

- [memory-engine](./src/engine/memory-engine/memory-engine.md) — _(no submodules)_- [errors](./src/errors/search-error.md) — _(no submodules)_- [search-error](./src/errors/search-error.md) — _(no submodules)_- [schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [search.schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [memory-engine](./src/engine/memory-engine/memory-engine.md) — _(no submodules)_- [errors](./src/errors/search-error.md) — _(no submodules)_- [search-error](./src/errors/search-error.md) — _(no submodules)_- [schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [search.schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [memory-engine](./src/engine/memory-engine/memory-engine.md) — _(no submodules)_- [errors](./src/errors/search-error.md) — _(no submodules)_- [search-error](./src/errors/search-error.md) — _(no submodules)_- [schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [search.schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_- [memory-engine](./src/engine/memory-engine/memory-engine.md) — _(no submodules)_- [errors](./src/errors/search-error.md) — _(no submodules)_ - [search-error](./src/errors/search-error.md) — _(no submodules)_- [schemas](./src/schemas/search.schemas.md) — _(no submodules)_ - [search.schemas](./src/schemas/search.schemas.md) — _(no submodules)_- [scorer](./src/text/scorer/scorer.md) — _(no submodules)_ - [scorer](./src/text/scorer/scorer.md) — _(no submodules)_- [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_ - [tokenizer](./src/text/tokenizer/tokenizer.md) — _(no submodules)_- [trigram](./src/text/trigram/trigram.md) — _(no submodules)_ - [trigram](./src/text/trigram/trigram.md) — _(no submodules)_

Modules

  • MemorySearchEngine — in-memory BM25 search engine
  • Tokenizer — text tokenization and stemming
  • Trigram — trigram-based fuzzy similarity
  • Scorer — BM25 and TF-IDF scoring functions
  • SearchError — structured errors with stable codes
  • Schemas — Zod schemas for all query types
  • Types — shared TypeScript interfaces

Quick Start

import { createMemorySearchEngine } from "@suaveplan/search";

interface Product { id: string; name: string; price: number }

const engine = createMemorySearchEngine<Product>({
  fields: [
    { name: "name", type: "text", searchable: true },
    { name: "price", type: "number", sortable: true },
  ],
});

await engine.index([
  { id: "1", name: "Laptop Pro", price: 999 },
  { id: "2", name: "Laptop Air", price: 799 },
]);

const result = await engine.search({ text: "laptop" });
console.log(result.hits.length); // 2