[[analysis-stemmer-override-tokenfilter]]
=== Stemmer Override Token Filter

Overrides stemming algorithms, by applying a custom mapping, then
protecting these terms from being modified by stemmers. Must be placed
before any stemming filters.

Rules are separated by `=>`

[cols="<,<",options="header",]
|=======================================================================
|Setting |Description
|`rules` |A list of mapping rules to use.

|`rules_path` |A path (either relative to `config` location, or
absolute) to a list of mappings.
|=======================================================================

Here is an example:

[source,js]
--------------------------------------------------
PUT /my_index
{
    "settings": {
        "analysis" : {
            "analyzer" : {
                "my_analyzer" : {
                    "tokenizer" : "standard",
                    "filter" : ["lowercase", "custom_stems", "porter_stem"]
                }
            },
            "filter" : {
                "custom_stems" : {
                    "type" : "stemmer_override",
                    "rules_path" : "analysis/stemmer_override.txt"
                }
            }
        }
    }
}
--------------------------------------------------
// CONSOLE

Where the file looks like:

[source,stemmer_override]
--------------------------------------------------
include::{docdir}/../src/test/cluster/config/analysis/stemmer_override.txt[]
--------------------------------------------------

You can also define the overrides rules inline:

[source,js]
--------------------------------------------------
PUT /my_index
{
    "settings": {
        "analysis" : {
            "analyzer" : {
                "my_analyzer" : {
                    "tokenizer" : "standard",
                    "filter" : ["lowercase", "custom_stems", "porter_stem"]
                }
            },
            "filter" : {
                "custom_stems" : {
                    "type" : "stemmer_override",
                    "rules" : [
                        "running => run",
                        "stemmer => stemmer"
                    ]
                }
            }
        }
    }
}
--------------------------------------------------
// CONSOLE
