Skip to content

Indices

Index Configuration (Global Defaults)

Indices control how the local database indexes transcribed data for efficient querying. Global indices defined here apply to all transcribes as defaults. Transcribe-level indices (at transcribes.<type>.indices.*) take precedence when both are defined.

All three index types can be defined at the root level:

  • value-match: For equality (eq, ne, in) and starts-with (sw) queries
  • partial-match: For contains, ends-with, and fuzzy queries (expensive)
  • sortable: For sort and range (lt, gt, le, ge) queries

Starts-with queries do not need partial-matchvalue-match covers them. Reach for partial-match only when callers actually search by contains, ends-with, or fuzzy match.

Attributes listed in any indices.* block of a transcribe are automatically fetched and stored — they do not also need to be listed in ldap.attributes. For relationship fields, choose the stored side before adding coverage. See Attribute Modeling.

Example:

indices {
partial-match = "cn, sn, description"
value-match = "uid, mail, employeeNumber"
sortable = "cn, displayName"
}

Attributes for contains, ends-with, and fuzzy queries. Creates trigram indexes for substring matching. Trigram indexes are typically 5–15× larger than equality indexes and slow writes proportionally — enable only for attributes that need this coverage. Starts-with (sw) queries do NOT require partial-match; configure those attributes under value-match instead. No baseline defaults — substring/typeahead is always explicit. Common "typeahead pack" for person directories:

indices.partial-match = "cn, sn, givenName, displayName"

Priority: SCRIBE_INDICES_PARTIAL_MATCH > config

PropertyValue
Defaultnull
OverrideSCRIBE_INDICES_PARTIAL_MATCH (optional)
indices.partial-match = null
indices.partial-match = ${?SCRIBE_INDICES_PARTIAL_MATCH}

Attributes for sort and range (≥, ≤) queries. Baseline defaults are automatically included for observed attributes: cn, sn, displayName, mail, uid. Covers paged-list sort keys and identity lookups. Group-membership attributes (memberOf, nrfMemberOf) are equality-only via value-match; add them here only if you actually sort by memberOf or range-scan group DNs. For relationship direction guidance, see Attribute Modeling.

Example: "cn, displayName, memberOf"

Priority: SCRIBE_INDICES_SORTABLE > config

PropertyValue
Defaultnull
OverrideSCRIBE_INDICES_SORTABLE (optional)
indices.sortable = null
indices.sortable = ${?SCRIBE_INDICES_SORTABLE}

Attributes for equality (eq, ne, in) and starts-with (sw) queries. Baseline defaults are automatically included for observed attributes: objectClass, structuralObjectClass, cn, sn, ou, uid, mail, displayName, member, memberOf, nrfMemberOf, nrfAssignedRoles, manager. Add custom equality filters here. Choose the stored relationship side before adding coverage: Attribute Modeling.

Example: "cn, uid, mail, nrfMemberOf"

Priority: SCRIBE_INDICES_VALUE_MATCH > config

PropertyValue
Defaultnull
OverrideSCRIBE_INDICES_VALUE_MATCH (optional)
indices.value-match = null
indices.value-match = ${?SCRIBE_INDICES_VALUE_MATCH}