SearchConfiguration
org.sagebionetworks.repo.model.search.table.SearchConfiguration
Bundles the index-wide default analyzer and per-column overrides used to build a SearchIndex. A SearchConfiguration is the equivalent of the analyzer wiring in the settings.analysis block of an OpenSearch create-index request — it points at the TextAnalyzer that supplies analysis.analyzer.default (and optionally analysis.analyzer.default_search) for the index, then layers any per-column overrides on top. Bind one to a project (or any entity) and every SearchIndex below it inherits the configuration.
Reference vs inline. Every analyzer / override slot accepts the same shape: either a reference to a saved resource — {"$ref": "{organizationName}-{name}"} — or an inline literal pasted directly. References preserve reuse and central editing; inline literals keep the configuration self-contained but cannot be referenced from elsewhere. The same $ref shape is also used inside a TextAnalyzer's settings.filter registry map to point at a SynonymSet, so curators learn one rule.
Example using a saved TextAnalyzer plus a saved override (both via $ref):
{
"organizationName": "biomed",
"name": "publications_v1",
"defaultAnalyzer": { "$ref": "org.sagebionetworks-SCIENTIFIC" },
"columnAnalyzerOverrides": [
{ "$ref": "biomed-publications_overrides" }
]
}Same shape, but with an inline override (the analyzer for the override's columns is itself a $ref):
{
"organizationName": "biomed",
"name": "publications_v1",
"defaultAnalyzer": { "$ref": "org.sagebionetworks-SCIENTIFIC" },
"columnAnalyzerOverrides": [
{
"overrides": [
{ "columnName": "disease_code", "analyzer": { "$ref": "biomed-acronym_exact" } },
{ "columnName": "authors", "analyzer": { "$ref": "biomed-scientific_search" } }
]
}
]
}Asymmetric index/search analysis (e.g. edge_ngram autocomplete) is expressed inside the chosen TextAnalyzer's settings JSON by declaring both analyzer.default and analyzer.default_search; OpenSearch picks the right one per its search-analyzer precedence rules. There is no separate search-time analyzer field on the SearchConfiguration — in line with the OpenSearch docs' guidance that this case is uncommon.
Synonyms are not wired through the SearchConfiguration. A TextAnalyzer that wants synonyms references a SynonymSet directly via {"$ref": "{org}-{name}"} inside its own settings.filter registry map — see TextAnalyzer.
See SearchConfigBinding for how the configuration attaches to a project, TextAnalyzer / ColumnAnalyzerOverride for the analyzer components.
| Field | Type | Description |
|---|---|---|
| id | STRING | The unique ID of this search configuration. |
| organizationName | STRING | The name of the Organization this resource belongs to. Immutable after creation. |
| name | STRING | The resource name. Must start with a letter and contain only letters, digits, and underscores. Unique within the organization and immutable after creation. Used as part of the qualified name ({organizationName}-{name}) when referenced by other resources. |
| description | STRING | Optional description. |
| defaultAnalyzer | OBJECT | Optional. The analyzer that supplies this index's $ref form: Inline form — the bare OpenSearch If the analyzer also declares an |
| columnAnalyzerOverrides | ARRAY<OBJECT> | Optional ordered list of ColumnAnalyzerOverride entries. Each entry is either a reference written as $ref form: Inline form — the same JSON shape a ColumnAnalyzerOverride record would have, minus identity / audit fields. The inner per-column |
| etag | STRING | Synapse employs an Optimistic Concurrency Control (OCC) scheme. |
| createdOn | STRING | The date this resource was created. |
| createdBy | STRING | The ID of the user that created this resource. |
| modifiedOn | STRING | The date this resource was last modified. |
| modifiedBy | STRING | The ID of the user that last modified this resource. |