关键词词元生成器

关键词词元生成器 #

关键字(keyword)词元生成器接收文本并将其原封不动地作为单个词元输出。当你希望输入内容保持完整时,比如在管理像姓名、产品代码或电子邮件地址这类结构化数据时,这个词元生成器就特别有用。

关键字词元生成器可以与词元过滤器搭配使用来处理文本。例如,对文本进行规范化处理或去除多余的字符。

参考样例 #

以下示例请求创建了一个名为 my_index 的新索引,并配置了一个使用关键字词元生成器的分词器:

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": "Easysearch Example"
}

返回内容会是包含原始内容的单个词元:

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

参数说明 #

关键字词元生成器可以使用以下参数进行配置。

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

将关键字词元生成器与词元过滤器结合使用 #

为了增强关键字词元生成器的功能,你可以将它与词元过滤器结合起来。词元过滤器能够对文本进行转换,例如将文本转换为小写形式或者移除不需要的字符。

示例:使用匹配替换(pattern_replace)词元过滤器和关键字词元生成器 #

在这个示例中,匹配替换(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
    }
  ]
}