The Open API specification for Synapse is now available for download!

Download Open API Spec

ColumnAnalyzerOverrideEntry

org.sagebionetworks.repo.model.search.table.ColumnAnalyzerOverrideEntry

Assigns one TextAnalyzer to one column. The referenced TextAnalyzer is the single source of truth for both index-time and search-time analysis on this column: its analyzer.default entry drives OpenSearch's analyzer field mapping, and its analyzer.default_search entry (if declared) drives the search_analyzer field mapping. To express asymmetric index/search analysis (e.g. an edge n-gram chain at index time paired with a non-ngram chain at search time), declare both entries inside the TextAnalyzer's settings; do not split the configuration into two TextAnalyzer records.

Field Type Description
columnName STRING The name of the column to override. Silently skipped at index-build time if the column is not present in the target SearchIndex's schema — a single override bundle can therefore be applied across several indexes that share some column names.
analyzer OBJECT

The analyzer to use for this column. Either a reference to a saved TextAnalyzer (preferred — supports reuse) written as {"$ref": "{organizationName}-{name}"}, or an inline analyzer literal pasted directly.

$ref form:

"analyzer": { "$ref": "biomed-acronym_exact" }

Inline form — the bare OpenSearch settings.analysis block (same shape as a TextAnalyzer record's settings field, with no surrounding identity / audit fields and no outer settings wrapper). Allowed root keys are char_filter, tokenizer, filter, and analyzer. The inner analyzer map must declare default (required), and may optionally declare default_search for asymmetric search-time analysis. Refs to SynonymSets are not permitted inside an inline analyzer literal — save a TextAnalyzer and reference it by qualified name to use synonyms.

"analyzer": {
  "analyzer": {
    "default": {
      "type": "custom",
      "tokenizer": "keyword",
      "filter": ["lowercase"]
    }
  }
}

The analyzer's analyzer.default entry is bound at index time; if it also declares analyzer.default_search, that entry is bound at search time.