Help us improve
Share bugs, ideas, or general feedback.
From documentdb
Implements full-text search in Azure DocumentDB with $search, BM25 scoring, fuzzy, phrase, custom analyzers, path hierarchy, and hybrid retrieval.
npx claudepluginhub azure/documentdb-agent-kit --plugin documentdbHow this skill is triggered — by the user, by Claude, or both
Slash command
/documentdb:full-text-searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Applies C++ Core Guidelines to write, review, or refactor C++ code. Enforces modern, safe, and idiomatic practices for C++17/20/23.
Share bugs, ideas, or general feedback.
$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:
createSearchIndexes (not createIndexes) — each index has a name and a definition.mappings.fields block; dynamic: false is the safe default.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.count field inside $search — use a downstream { $limit: N } stage.compound operator yet — query one field at a time and merge in the application (see fts-multifield-index).runCommand({ createSearchIndexes }); use definition.mappings with dynamic: false.$search + text operator for BM25 keyword search; target index, project searchScore, cap with $limit.fuzzy: { maxEdits: 1 } to tolerate typos; keep maxEdits small.phrase operator with slop for ordered-proximity matching.lowerCase + asciiFolding + edgeGram for case-insensitive prefix matching on IDs, SKUs, part numbers. Index-time vs search-time analyzer pair.pathHierarchy tokenizer for hierarchical identifiers (BN-747-ENG-2024.05, dotted, slash paths).$search compound is unavailable.