diff --git a/docs/reference/analysis/tokenfilters/length-tokenfilter.asciidoc b/docs/reference/analysis/tokenfilters/length-tokenfilter.asciidoc index e53a198df5570..4bbe60e52be26 100644 --- a/docs/reference/analysis/tokenfilters/length-tokenfilter.asciidoc +++ b/docs/reference/analysis/tokenfilters/length-tokenfilter.asciidoc @@ -1,16 +1,170 @@ [[analysis-length-tokenfilter]] -=== Length Token Filter +=== Length token filter +++++ +Length +++++ -A token filter of type `length` that removes words that are too long or -too short for the stream. +Removes tokens shorter or longer than specified character lengths. +For example, you can use the `length` filter to exclude tokens shorter than 2 +characters and tokens longer than 5 characters. -The following are settings that can be set for a `length` token filter -type: +This filter uses Lucene's +https://lucene.apache.org/core/{lucene_version_path}/analyzers-common/org/apache/lucene/analysis/miscellaneous/LengthFilter.html[LengthFilter]. -[cols="<,<",options="header",] -|=========================================================== -|Setting |Description -|`min` |The minimum number. Defaults to `0`. -|`max` |The maximum number. Defaults to `Integer.MAX_VALUE`, which is `2^31-1` or 2147483647. -|=========================================================== +[TIP] +==== +The `length` filter removes entire tokens. If you'd prefer to shorten tokens to +a specific length, use the <> filter. +==== +[[analysis-length-tokenfilter-analyze-ex]] +==== Example + +The following <> request uses the `length` +filter to remove tokens longer than 4 characters: + +[source,console] +-------------------------------------------------- +GET _analyze +{ + "tokenizer": "whitespace", + "filter": [ + { + "type": "length", + "min": 0, + "max": 4 + } + ], + "text": "the quick brown fox jumps over the lazy dog" +} +-------------------------------------------------- + +The filter produces the following tokens: + +[source,text] +-------------------------------------------------- +[ the, fox, over, the, lazy, dog ] +-------------------------------------------------- + +///////////////////// +[source,console-result] +-------------------------------------------------- +{ + "tokens": [ + { + "token": "the", + "start_offset": 0, + "end_offset": 3, + "type": "word", + "position": 0 + }, + { + "token": "fox", + "start_offset": 16, + "end_offset": 19, + "type": "word", + "position": 3 + }, + { + "token": "over", + "start_offset": 26, + "end_offset": 30, + "type": "word", + "position": 5 + }, + { + "token": "the", + "start_offset": 31, + "end_offset": 34, + "type": "word", + "position": 6 + }, + { + "token": "lazy", + "start_offset": 35, + "end_offset": 39, + "type": "word", + "position": 7 + }, + { + "token": "dog", + "start_offset": 40, + "end_offset": 43, + "type": "word", + "position": 8 + } + ] +} +-------------------------------------------------- +///////////////////// + +[[analysis-length-tokenfilter-analyzer-ex]] +==== Add to an analyzer + +The following <> request uses the +`length` filter to configure a new +<>. + +[source,console] +-------------------------------------------------- +PUT length_example +{ + "settings": { + "analysis": { + "analyzer": { + "standard_length": { + "tokenizer": "standard", + "filter": [ "length" ] + } + } + } + } +} +-------------------------------------------------- + +[[analysis-length-tokenfilter-configure-parms]] +==== Configurable parameters + +`min`:: +(Optional, integer) +Minimum character length of a token. Shorter tokens are excluded from the +output. Defaults to `0`. + +`max`:: +(Optional, integer) +Maximum character length of a token. Longer tokens are excluded from the output. +Defaults to `Integer.MAX_VALUE`, which is `2^31-1` or `2147483647`. + +[[analysis-length-tokenfilter-customize]] +==== Customize + +To customize the `length` filter, duplicate it to create the basis +for a new custom token filter. You can modify the filter using its configurable +parameters. + +For example, the following request creates a custom `length` filter that removes +tokens shorter than 2 characters and tokens longer than 10 characters: + +[source,console] +-------------------------------------------------- +PUT length_custom_example +{ + "settings": { + "analysis": { + "analyzer": { + "whitespace_length_2_to_10_char": { + "tokenizer": "whitespace", + "filter": [ "length_2_to_10_char" ] + } + }, + "filter": { + "length_2_to_10_char": { + "type": "length", + "min": 2, + "max": 10 + } + } + } + } +} +--------------------------------------------------