Link Search Menu Expand Document Documentation Menu

Keyword 分词器

keyword 分词器摄取文本并将其精确地输出为单个、未更改的词元。当您希望输入保持不变时,例如在管理姓名、产品代码或电子邮件地址等结构化数据时,这会特别有用。

keyword 分词器可以与词元过滤器配合使用来处理文本,例如,用于将其标准化或删除无关字符。

使用示例

以下示例请求创建了一个名为 my_index 的新索引,并使用 keyword 分词器配置了一个分析器

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_keyword_analyzer": {
          "type": "custom",
          "tokenizer": "keyword"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_keyword_analyzer"
      }
    }
  }
}

生成的词元

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

POST /my_index/_analyze
{
  "analyzer": "my_keyword_analyzer",
  "text": "OpenSearch Example"
}

响应包含表示原始文本的单个词元

{
  "tokens": [
    {
      "token": "OpenSearch Example",
      "start_offset": 0,
      "end_offset": 18,
      "type": "word",
      "position": 0
    }
  ]
}

参数

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

参数 必需/可选 数据类型 描述
buffer_size 可选 整数 确定字符缓冲区大小。默认值为 256。通常无需更改此设置。

将 keyword 分词器与词元过滤器结合使用

为了增强 keyword 分词器的功能,您可以将其与词元过滤器结合使用。词元过滤器可以转换文本,例如将其转换为小写或删除不需要的字符。

示例:使用 pattern_replace 过滤器和 keyword 分词器

在此示例中,pattern_replace 过滤器使用正则表达式将所有非字母数字字符替换为空字符串

POST _analyze
{
  "tokenizer": "keyword",
  "filter": [
    {
      "type": "pattern_replace",
      "pattern": "[^a-zA-Z0-9]",
      "replacement": ""
    }
  ],
  "text": "Product#1234-XYZ"
}

pattern_replace 过滤器删除非字母数字字符并返回以下词元

{
  "tokens": [
    {
      "token": "Product1234XYZ",
      "start_offset": 0,
      "end_offset": 16,
      "type": "word",
      "position": 0
    }
  ]
}
剩余 350 字符

有问题?

想做贡献?