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
}
]
}