---
title: "@playstack/search"
description: "Runtime-neutral mapped search, deterministic lexical ranking, validated protocols, and HTTP provider contracts."
tags: ["package","content","search","lexical","protocol","free"]
---

{/* package-access:start */}

> **Free.** MIT licensed. Check preview availability before installing. See [package access](/docs/packages#access-policy).

{/* package-access:end */}

`@playstack/search` lets a product map its own records, filters, result shape, and ranking vocabulary into a portable search source.

```ts
const engine = createLexicalSearchEngine(records, {
  document: (record) => ({
    id: record.id,
    fields: { title: record.title, body: record.body, tags: record.tags },
    result: { id: record.id, title: record.title, href: record.href },
    group: record.parentId,
  }),
  fields: { title: 10, tags: 6, body: 1 },
  maxResultsPerGroup: 2,
})
```

The engine supports weighted fields, synonyms, filters, popular results, priority, stable ties, and per-group limits. Fetch handlers and clients validate the application-defined protocol, forward cancellation, default to private/no-store responses, and do not leak provider failures.

The package knows nothing about Chakra Docs, filesystems, databases, hosted search providers, or framework routes.

{/* package-install:start */}

## Install

After confirming [preview access](/docs/packages#access-policy), install the package at your application's shared Playstack version:

```sh
npm install --save-exact @playstack/search@0.1.0-beta.1
```

Check the peer requirements below before choosing a runtime or provider.

{/* package-install:end */}

{/* package-reference:start */}

## API entry points and requirements

Reference snapshot: `@playstack/search@0.1.0-beta.1`. Import only the entry point your runtime needs. Paths below are relative to the installed package; use **Go to Definition** in your editor to inspect exact parameters, return types and overloads. Do not import the declaration-file paths directly.

| Public entry point | Declaration file |
| --- | --- |
| `@playstack/search` | `./dist/index.d.ts` |
| `@playstack/search/client` | `./dist/client.d.ts` |
| `@playstack/search/errors` | `./dist/errors.d.ts` |
| `@playstack/search/http` | `./dist/http.d.ts` |
| `@playstack/search/lexical` | `./dist/lexical.d.ts` |
| `@playstack/search/testing` | `./dist/testing.d.ts` |
| `@playstack/search/playstack.integration.json` | No TypeScript declaration (asset or metadata export). |
| `@playstack/search/package.json` | No TypeScript declaration (asset or metadata export). |

Node.js engine requirement: `>=20`. This is not a claim that every entry point works in browsers or Workers.

### Peer dependencies

This package declares no peer dependencies. Its ordinary dependencies are resolved by the package manager.

For a complete first program, start with [Getting started](/docs/getting-started). For API lookup and partial-example conventions, see [Reading the reference](/docs/packages#reading-the-reference). Provider failures, lifecycle requirements and application responsibilities remain described in the guide above; types alone do not establish production safety.

{/* package-reference:end */}
