指纹分析器
fingerprint
分析器会创建一个文本指纹。该分析器会对从输入生成的词项(标记)进行排序和去重,然后使用分隔符将它们连接起来。它常用于数据去重,因为对于包含相同词语的相似输入,无论词序如何,它都会生成相同的输出。
fingerprint
分析器包含以下组件
- 标准分词器
- 小写词元过滤器
- ASCII 折叠词元过滤器
- 停用词词元过滤器
- 指纹词元过滤器
参数
fingerprint
分析器可以使用以下参数进行配置。
参数 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
分隔符 | 可选 | 字符串 | 指定词项在分词、排序和去重后用于连接的字符。默认值为空格 ( )。 |
最大输出大小 | 可选 | 整数 | 定义输出标记的最大大小。如果连接后的指纹超过此大小,则会被截断。默认值为 255 。 |
停用词 | 可选 | 字符串或字符串列表 | 自定义或预定义的停用词列表。默认值为 _none_ 。 |
停用词路径 | 可选 | 字符串 | 包含停用词列表的文件的路径(绝对路径或相对于配置目录的相对路径)。 |
示例
使用以下命令创建一个名为 my_custom_fingerprint_index
的索引,并带有 fingerprint
分析器
PUT /my_custom_fingerprint_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_fingerprint_analyzer": {
"type": "fingerprint",
"separator": "-",
"max_output_size": 50,
"stopwords": ["to", "the", "over", "and"]
}
}
}
},
"mappings": {
"properties": {
"my_field": {
"type": "text",
"analyzer": "my_custom_fingerprint_analyzer"
}
}
}
}
生成的词元
使用以下请求检查使用该分析器生成的词元
POST /my_custom_fingerprint_index/_analyze
{
"analyzer": "my_custom_fingerprint_analyzer",
"text": "The slow turtle swims over to the dog"
}
响应包含生成的词元
{
"tokens": [
{
"token": "dog-slow-swims-turtle",
"start_offset": 0,
"end_offset": 37,
"type": "fingerprint",
"position": 0
}
]
}
进一步自定义
如果需要进一步自定义,可以定义一个包含附加 fingerprint
分析器组件的分析器
PUT /custom_fingerprint_analyzer
{
"settings": {
"analysis": {
"analyzer": {
"custom_fingerprint": {
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding",
"fingerprint"
]
}
}
}
}
}