KStem 分词过滤器

KStem 分词过滤器 #

KStem 分词过滤器是一种词干提取过滤器,用于将单词还原为其词根形式。该过滤器是一种专为英语设计的轻量级算法词干提取器,它执行以下词干提取操作:

  1. 将复数形式的单词还原为单数形式。
  2. 将不同的动词时态转换为其基本形式。
  3. 去除常见的派生词尾,例如 “-ing” 或 “-ed”。

KStem 分词过滤器等同于配置了 light_english 语言的词干提取器过滤器。与其他词干提取过滤器(如词干提取器 porter_stem)相比,它提供了更为保守的词干提取方式。

KStem 分词过滤器基于 Lucene 的 KStemFilter。如需了解更多信息,请参阅 Lucene 文档

参考样例 #

以下示例请求创建了一个名为 my_kstem_index 的新索引,并配置了一个带有 KStem 过滤器的分词器:

PUT /my_kstem_index
{
  "settings": {
    "analysis": {
      "filter": {
        "kstem_filter": {
          "type": "kstem"
        }
      },
      "analyzer": {
        "my_kstem_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "kstem_filter"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_kstem_analyzer"
      }
    }
  }
}

产生的词元 #

使用以下请求来检查使用该分词器生成的词元:

POST /my_kstem_index/_analyze
{
  "analyzer": "my_kstem_analyzer",
  "text": "stops stopped"
}

返回内容包含产生的词元

{
  "tokens": [
    {
      "token": "stop",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "stop",
      "start_offset": 6,
      "end_offset": 13,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}