Link Search Menu Expand Document Documentation Menu

关键字标记分词过滤器

keyword_marker 分词过滤器用于防止某些词元被词干提取器或其他过滤器改变。keyword_marker 分词过滤器通过将指定词元标记为 keywords 来实现此目的,这可以防止任何词干提取或其他处理。这确保了特定词汇保持其原始形式。

参数

keyword_marker 分词过滤器可以使用以下参数进行配置。

参数 必需/可选 数据类型 描述
ignore_case 可选 布尔型 匹配关键字时是否忽略字母大小写。默认为 false
keywords 如果未设置 keywords_pathkeywords_pattern,则此项为必填。 字符串列表 要标记为关键字的词元列表。
keywords_path 如果未设置 keywordskeywords_pattern,则此项为必填。 字符串 关键字列表的路径(相对于 config 目录或绝对路径)。
keywords_pattern 如果未设置 keywordskeywords_path,则此项为必填。 字符串 用于匹配要标记为关键字的词元的正则表达式

示例

以下示例请求创建一个名为 my_index 的新索引,并配置一个带有 keyword_marker 过滤器的分析器。该过滤器将单词 example 标记为关键字。

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "keyword_marker_filter", "stemmer"]
        }
      },
      "filter": {
        "keyword_marker_filter": {
          "type": "keyword_marker",
          "keywords": ["example"]
        }
      }
    }
  }
}

生成的词元

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

GET /my_index/_analyze
{
  "analyzer": "custom_analyzer",
  "text": "Favorite example"
}

响应包含生成的词元。请注意,单词 favorite 经过了词干提取,而单词 example 没有,因为它被标记为关键字。

{
  "tokens": [
    {
      "token": "favorit",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "example",
      "start_offset": 9,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

您可以通过向 _analyze 查询添加以下参数来进一步检查 keyword_marker 分词过滤器的影响。

GET /my_index/_analyze
{
  "analyzer": "custom_analyzer",
  "text": "This is an OpenSearch example demonstrating keyword marker.",
  "explain": true,
  "attributes": "keyword"
}

这将在响应中产生类似以下的额外详细信息。

{
    "name": "porter_stem",
    "tokens": [
      ...
      {
        "token": "example",
        "start_offset": 22,
        "end_offset": 29,
        "type": "<ALPHANUM>",
        "position": 4,
        "keyword": true
      },
      {
        "token": "demonstr",
        "start_offset": 30,
        "end_offset": 43,
        "type": "<ALPHANUM>",
        "position": 5,
        "keyword": false
      },
      ...
    ]
}
剩余 350 字符

有问题?

想贡献?