词干提取器词元过滤器

编辑

为多种语言提供算法词干提取,其中一些语言还带有附加变体。有关支持语言的列表,请参见language参数。

未自定义时,过滤器对英语使用porter 词干提取算法

示例

编辑

以下 analyze 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"
        }
      }
    }
  }
}