/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
/**
 * <p>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 <code>settings.analysis</code> block of an OpenSearch <a href='https://docs.opensearch.org/latest/api-reference/index-apis/create-index/'>create-index</a> request &mdash; it points at the TextAnalyzer that supplies <code>analysis.analyzer.default</code> (and optionally <code>analysis.analyzer.default_search</code>) 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.</p><p><b>Reference vs inline.</b> Every analyzer / override slot accepts the same shape: either a reference to a saved resource &mdash; <code>{"$ref": "{organizationName}-{name}"}</code> &mdash; 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 <code>$ref</code> shape is also used inside a TextAnalyzer's <code>settings.filter</code> registry map to point at a SynonymSet, so curators learn one rule.</p><p>Example using a saved TextAnalyzer plus a saved override (both via <code>$ref</code>):</p><pre><code>{
 *   "organizationName": "biomed",
 *   "name": "publications_v1",
 *   "defaultAnalyzer": { "$ref": "org.sagebionetworks-SCIENTIFIC" },
 *   "columnAnalyzerOverrides": [
 *     { "$ref": "biomed-publications_overrides" }
 *   ]
 * }</code></pre><p>Same shape, but with an inline override (the analyzer for the override's columns is itself a <code>$ref</code>):</p><pre><code>{
 *   "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" } }
 *       ]
 *     }
 *   ]
 * }</code></pre><p><b>Asymmetric index/search analysis</b> (e.g. edge_ngram autocomplete) is expressed inside the chosen TextAnalyzer's settings JSON by declaring both <code>analyzer.default</code> and <code>analyzer.default_search</code>; OpenSearch picks the right one per its <a href='https://docs.opensearch.org/latest/analyzers/search-analyzers/'>search-analyzer precedence</a> rules. There is no separate search-time analyzer field on the SearchConfiguration &mdash; in line with the OpenSearch docs' guidance that this case is uncommon.</p><p><b>Synonyms</b> are not wired through the SearchConfiguration. A TextAnalyzer that wants synonyms references a SynonymSet directly via <code>{"$ref": "{org}-{name}"}</code> inside its own <code>settings.filter</code> registry map &mdash; see TextAnalyzer.</p><p>See SearchConfigBinding for how the configuration attaches to a project, TextAnalyzer / ColumnAnalyzerOverride for the analyzer components.</p>
 * @export
 * @interface SearchConfiguration
 */
export interface SearchConfiguration {
    /**
     * The unique ID of this search configuration.
     * @type {string}
     * @memberof SearchConfiguration
     */
    id?: string;
    /**
     * The name of the Organization this resource belongs to. Immutable after creation.
     * @type {string}
     * @memberof SearchConfiguration
     */
    organizationName?: 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.
     * @type {string}
     * @memberof SearchConfiguration
     */
    name?: string;
    /**
     * Optional description.
     * @type {string}
     * @memberof SearchConfiguration
     */
    description?: string;
    /**
     * <p>Optional. The analyzer that supplies this index's <code>analysis.analyzer.default</code> slot. Either a reference to a saved TextAnalyzer (preferred &mdash; supports reuse) written as <code>{"$ref": "{organizationName}-{name}"}</code>, or an inline analyzer literal pasted directly. The <code>$ref</code> form looks up the row by qualified name; the inline form lives only inside this SearchConfiguration's JSON, has no persisted id, and cannot be reused elsewhere.</p><p><b>$ref form:</b></p><pre><code>"defaultAnalyzer": { "$ref": "biomed-publications" }</code></pre><p><b>Inline form</b> &mdash; the bare OpenSearch <code>settings.analysis</code> block. Allowed root keys are <code>char_filter</code>, <code>tokenizer</code>, <code>filter</code>, and <code>analyzer</code>. Refs to SynonymSets are not permitted inside an inline analyzer literal &mdash; save a TextAnalyzer and reference it by qualified name to use synonyms.</p><pre><code>"defaultAnalyzer": {
     *   "tokenizer": { "std": { "type": "standard" } },
     *   "filter":    { "english_stop": { "type": "stop", "stopwords": "_english_" } },
     *   "analyzer": {
     *     "default": {
     *       "type": "custom",
     *       "tokenizer": "std",
     *       "filter": ["lowercase", "english_stop"]
     *     }
     *   }
     * }</code></pre><p>If the analyzer also declares an <code>analyzer.default_search</code> entry, that becomes the index's <code>analysis.analyzer.default_search</code> &mdash; see OpenSearch's <a href='https://docs.opensearch.org/latest/analyzers/index-analyzers/'>index analyzers</a> and <a href='https://docs.opensearch.org/latest/analyzers/search-analyzers/'>search analyzers</a> for the precedence rules. If omitted, each column falls back to the system default analyzer for its data type (see ColumnTypeToOpenSearchMapping).</p>
     * @type {any}
     * @memberof SearchConfiguration
     */
    defaultAnalyzer?: any | null;
    /**
     * <p>Optional ordered list of ColumnAnalyzerOverride entries. Each entry is either a reference written as <code>{"$ref": "{organizationName}-{name}"}</code> (preferred &mdash; supports reuse) or an inline ColumnAnalyzerOverride literal. Inline entries live only inside this SearchConfiguration's JSON. First match wins for duplicated column names across overrides.</p><p><b>$ref form:</b></p><pre><code>"columnAnalyzerOverrides": [
     *   { "$ref": "biomed-publications_overrides" }
     * ]</code></pre><p><b>Inline form</b> &mdash; the same JSON shape a ColumnAnalyzerOverride record would have, minus identity / audit fields. The inner per-column <code>analyzer</code> slot still accepts either a <code>$ref</code> to a saved TextAnalyzer or a bare OpenSearch <code>settings.analysis</code> block:</p><pre><code>"columnAnalyzerOverrides": [
     *   {
     *     "overrides": [
     *       { "columnName": "disease_code", "analyzer": { "$ref": "biomed-acronym_exact" } },
     *       { "columnName": "abstract",     "analyzer": {
     *         "analyzer": {
     *           "default": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase"] }
     *         }
     *       } }
     *     ]
     *   }
     * ]</code></pre>
     * @type {Array<any>}
     * @memberof SearchConfiguration
     */
    columnAnalyzerOverrides?: Array<any>;
    /**
     * Synapse employs an Optimistic Concurrency Control (OCC) scheme.
     * @type {string}
     * @memberof SearchConfiguration
     */
    etag?: string;
    /**
     * The date this resource was created.
     * @type {string}
     * @memberof SearchConfiguration
     */
    createdOn?: string;
    /**
     * The ID of the user that created this resource.
     * @type {string}
     * @memberof SearchConfiguration
     */
    createdBy?: string;
    /**
     * The date this resource was last modified.
     * @type {string}
     * @memberof SearchConfiguration
     */
    modifiedOn?: string;
    /**
     * The ID of the user that last modified this resource.
     * @type {string}
     * @memberof SearchConfiguration
     */
    modifiedBy?: string;
}
/**
 * Check if a given object implements the SearchConfiguration interface.
 */
export declare function instanceOfSearchConfiguration(value: object): value is SearchConfiguration;
export declare function SearchConfigurationFromJSON(json: any): SearchConfiguration;
export declare function SearchConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): SearchConfiguration;
export declare function SearchConfigurationToJSON(json: any): SearchConfiguration;
export declare function SearchConfigurationToJSONTyped(value?: SearchConfiguration | null, ignoreDiscriminator?: boolean): any;
