Porter stem token filter

edit

Provides algorithmic stemming for the English language, based on the Porter stemming algorithm.

This filter tends to stem more aggressively than other English stemmer filters, such as the kstem filter.

The porter_stem filter is equivalent to the stemmer filter’s english variant.

The porter_stem filter uses Lucene’s PorterStemFilter.

Example

edit

The following analyze API request uses the porter_stem filter to stem the foxes jumping quickly to the fox jump quickli:

response = client.indices.analyze(
  body: {
    tokenizer: 'standard',
    filter: [
      'porter_stem'
    ],
    text: 'the foxes jumping quickly'
  }
)
puts response
GET /_analyze
{
  "tokenizer": "standard",
  "filter": [ "porter_stem" ],
  "text": "the foxes jumping quickly"
}

The filter produces the following tokens:

[ the, fox, jump, quickli ]

Add to an analyzer

edit

The following create index API request uses the porter_stem filter to configure a new custom analyzer.

To work properly, the porter_stem filter requires lowercase tokens. To ensure tokens are lowercased, add the lowercase filter before the porter_stem filter in the analyzer configuration.

PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "porter_stem"
          ]
        }
      }
    }
  }
}