Azure (Microsoft) logo

Skill

documentdb-full-text-search

implement full-text search in Azure DocumentDB

Covers Azure Database Search

Description

Full-text search best practices for Azure DocumentDB using the `createSearchIndexes` command and `$search` aggregation stage — BM25 keyword scoring, fuzzy search (`maxEdits`), phrase search with `slop`, custom analyzers (keyword + lowerCase + asciiFolding + edgeGram) for prefix / ID matching, `pathHierarchy` tokenizer for hierarchical IDs, multi-field search indexes, and hybrid (BM25 + vector) retrieval via Reciprocal Rank Fusion. Use when building search experiences, adding typo tolerance, matching phrases or prefixes on IDs / SKUs / part numbers, or combining lexical and semantic retrieval on the same collection.

SKILL.md

Full-Text Search — Azure DocumentDB ($search + createSearchIndexes)

Azure DocumentDB's full-text search is driven by search indexes built with the createSearchIndexes database command and queried through the $search aggregation stage. Scoring is BM25, exposed via $meta: "searchScore". The community $text operator and { field: "text" } index type are not the DocumentDB search path.

Key syntax points that differ from many blog posts and older docs:

  • Index command is createSearchIndexes (not createIndexes) — each index has a name and a definition.mappings.fields block; dynamic: false is the safe default.
  • Custom analyzers live inside definition.analyzers and are referenced per-field via analyzer / searchAnalyzer.
  • $search targets an index by name via index: "<name>" — the engine does not auto-pick when multiple exist.
  • No count field inside $search — use a downstream { $limit: N } stage.
  • No compound operator yet — query one field at a time and merge in the application (see fts-multifield-index).

Rules

  • fts-create-search-index — Create a search index via runCommand({ createSearchIndexes }); use definition.mappings with dynamic: false.
  • fts-basic-search$search + text operator for BM25 keyword search; target index, project searchScore, cap with $limit.
  • fts-fuzzy-search — Add fuzzy: { maxEdits: 1 } to tolerate typos; keep maxEdits small.
  • fts-phrase-searchphrase operator with slop for ordered-proximity matching.
  • fts-custom-analyzers — Keyword tokenizer + lowerCase + asciiFolding + edgeGram for case-insensitive prefix matching on IDs, SKUs, part numbers. Index-time vs search-time analyzer pair.
  • fts-path-hierarchypathHierarchy tokenizer for hierarchical identifiers (BN-747-ENG-2024.05, dotted, slash paths).
  • fts-multifield-index — One search index mapping multiple fields; fan-out-and-merge in the app while $search compound is unavailable.
  • fts-hybrid-search — Combine BM25 and vector search (RRF) on the same collection.

© 2026 YourAI.tools. Every skill from an identity-verified publisher.

Independent catalog. Not affiliated with, endorsed by, or sponsored by Anthropic or any listed publisher. All trademarks belong to their respective owners.