Searching Lexicons

Search finds lexicons by what their schemas say, not only by NSID. Type a few words into the search page, or into the box at the top of every page and press Enter.

What is matched

Every indexed lexicon is searchable by, in order of weight:

  1. Its NSID, segment by segment: app.bsky.feed.post matches feed and post.
  2. Its main description and the names of its definitions.
  3. Field, parameter and error names, plus knownValues and enum entries and the collections and methods a permission set grants. Names match whole or split into words, so starts finds startsAt.
  4. Every other description in the schema.

Word forms match too: events finds event. Very common words such as the or for are not indexed.

Query syntax

  • calendar event — lexicons containing both words.
  • "reading list" — the exact phrase.
  • calendar -google — leave out lexicons that mention a word.
  • rsvp or attendance — either word.
  • A complete NSID, such as community.lexicon.calendar.event, puts that lexicon first, marked exact match.

Use the type checkboxes to show only records, queries, procedures, subscriptions or permission sets.

Search by meaning

When it is switched on for this server, a Search by meaning toggle appears under the search box. It ranks lexicons by how close their schemas are in meaning to what you typed, using a text-embedding model, so you can describe what you need in your own words: store a user's reading list finds book and reading-log lexicons even if none of them uses the word "store". If the model is unavailable, you get keyword results and a note saying so.

Each lexicon's page may also list similar lexicons: ones whose schemas describe something close. They are worth checking before publishing a new lexicon that overlaps an existing one.

Ranking and the authority flag

Anyone can publish a schema under any NSID. A lexicon whose publishing account is the NSID's DNS authority (its _lexicon TXT record) ranks normally. Any other publisher's copy ranks lower and is flagged not from the namespace authority. Each result shows the version the lexicon's own page shows: the newest live record, preferring the authority's.

Deleted lexicons leave the results within minutes. Lexicons on the denylist never appear.

For developers: garden.lexicon.search

The same search is available as an anonymous, rate-limited XRPC query:

GET /xrpc/garden.lexicon.search?q=calendar%20event&lexiconType=record&limit=20
  • q (required, 2–256 characters) — the search text, with the syntax above.
  • lexiconType (optional, repeatable) — record, query, procedure, subscription or permission-set.
  • limit (optional, 1–50, default 20) — clamped when out of range.
  • cursor (optional) — from the previous response, for the next page.
  • mode (optional) — keyword (default) or semantic. The response's mode says which ran, since semantic falls back to keyword when unavailable.

Each result carries nsid, did, uri, lexiconType, authoritative, exact, summary, and a plain-text snippet with highlights given as UTF-8 byte ranges, the same convention as richtext facets. The schema is garden.lexicon.search.

For prefix lookups and typeahead, use garden.lexicon.suggest and garden.lexicon.browse instead.

Lexicon Garden

@