Stemmer 分词过滤器
编辑Stemmer 分词过滤器
编辑为多种语言提供算法词干提取,有些语言还包括额外的变体。有关支持的语言列表,请参阅language
参数。
如果未进行自定义,则该过滤器对英语使用Porter 词干提取算法。
示例
编辑以下分析 API 请求使用stemmer
过滤器的默认 Porter 词干提取算法,将the foxes jumping quickly
词干提取为the fox jump quickli
resp = client.indices.analyze( tokenizer="standard", filter=[ "stemmer" ], text="the foxes jumping quickly", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'standard', filter: [ 'stemmer' ], text: 'the foxes jumping quickly' } ) puts response
const response = await client.indices.analyze({ tokenizer: "standard", filter: ["stemmer"], text: "the foxes jumping quickly", }); console.log(response);
GET /_analyze { "tokenizer": "standard", "filter": [ "stemmer" ], "text": "the foxes jumping quickly" }
该过滤器生成以下标记:
[ the, fox, jump, quickli ]
添加到分析器
编辑以下创建索引 API 请求使用stemmer
过滤器来配置新的自定义分析器。
resp = client.indices.create( index="my-index-000001", settings={ "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "whitespace", "filter": [ "stemmer" ] } } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { my_analyzer: { tokenizer: 'whitespace', filter: [ 'stemmer' ] } } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", settings: { analysis: { analyzer: { my_analyzer: { tokenizer: "whitespace", filter: ["stemmer"], }, }, }, }, }); console.log(response);
PUT /my-index-000001 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "whitespace", "filter": [ "stemmer" ] } } } } }
可配置参数
编辑-
language
-
(可选,字符串) 用于对标记进行词干提取的依赖于语言的词干提取算法。如果同时指定了此参数和
name
参数,则使用language
参数的值。language
的有效值有效值按语言排序。默认为
english
。推荐的算法以粗体显示。- 阿拉伯语
-
arabic
- 亚美尼亚语
-
armenian
- 巴斯克语
-
basque
- 孟加拉语
-
bengali
- 巴西葡萄牙语
-
brazilian
- 保加利亚语
-
bulgarian
- 加泰罗尼亚语
-
catalan
- 捷克语
-
czech
- 丹麦语
-
danish
- 荷兰语
-
dutch
,dutch_kp
[8.16.0] 已在 8.16.0 中弃用。dutch_kp
将在未来版本中删除 - 英语
-
english
,light_english
,lovins
[8.16.0] 已在 8.16.0 中弃用。lovins
将在未来版本中删除 ,minimal_english
,porter2
,possessive_english
- 爱沙尼亚语
-
estonian
- 芬兰语
-
finnish
,light_finnish
- 法语
-
light_french
,french
,minimal_french
- 加利西亚语
-
galician
,minimal_galician
(仅复数步骤) - 德语
-
light_german
,german
,german2
,minimal_german
- 希腊语
-
greek
- 印地语
-
hindi
- 匈牙利语
-
hungarian
,light_hungarian
- 印尼语
-
indonesian
- 爱尔兰语
-
irish
- 意大利语
-
light_italian
,italian
- 库尔德语(索拉尼语)
-
sorani
- 拉脱维亚语
-
latvian
- 立陶宛语
-
lithuanian
- 挪威语(博克马尔语)
-
norwegian
,light_norwegian
,minimal_norwegian
- 挪威语(新挪威语)
-
light_nynorsk
,minimal_nynorsk
- 波斯语
-
persian
- 葡萄牙语
-
light_portuguese
,minimal_portuguese
,portuguese
,portuguese_rslp
- 罗马尼亚语
-
romanian
- 俄语
-
russian
,light_russian
- 塞尔维亚语
-
serbian
- 西班牙语
-
light_spanish
,spanish
spanish_plural
- 瑞典语
-
swedish
,light_swedish
- 土耳其语
-
turkish
-
name
language
参数的别名。如果同时指定了此参数和language
参数,则使用language
参数的值。
自定义
编辑要自定义stemmer
过滤器,请复制它以创建新自定义分词过滤器的基础。您可以使用其可配置参数修改过滤器。
例如,以下请求创建了一个自定义stemmer
过滤器,该过滤器使用light_german
算法对单词进行词干提取。
resp = client.indices.create( index="my-index-000001", settings={ "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "standard", "filter": [ "lowercase", "my_stemmer" ] } }, "filter": { "my_stemmer": { "type": "stemmer", "language": "light_german" } } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { settings: { analysis: { analyzer: { my_analyzer: { tokenizer: 'standard', filter: [ 'lowercase', 'my_stemmer' ] } }, filter: { my_stemmer: { type: 'stemmer', language: 'light_german' } } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", settings: { analysis: { analyzer: { my_analyzer: { tokenizer: "standard", filter: ["lowercase", "my_stemmer"], }, }, filter: { my_stemmer: { type: "stemmer", language: "light_german", }, }, }, }, }); console.log(response);
PUT /my-index-000001 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "standard", "filter": [ "lowercase", "my_stemmer" ] } }, "filter": { "my_stemmer": { "type": "stemmer", "language": "light_german" } } } } }