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.
semantic BOOLEAN

When true this column also feeds the index's semantic_search vector field, so a neural clause can match against it. Only STRING, STRING_LIST, MEDIUMTEXT, LARGETEXT, LINK, and JSON columns may be flagged; flagging any other type, or flagging any column on a source with more than 50,000 rows, fails the index build. A JSON value is embedded as its JSON text. Independent of analyzer — an entry may set either, both, or semantic alone. When several overrides name the same column, only the first entry is used, so a semantic flag on a later entry for that column is ignored.

Long values are truncated for embedding. All of a row's flagged columns are joined into a single text of Name: value lines, and that text is capped at 8,000 tokens before it is embedded. Text past the cap contributes nothing to the vector. The columns themselves are unaffected: each value is indexed in full, returned in full on a hit, and remains fully matchable by keyword clauses.

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.