Link Search Menu Expand Document Documentation Menu

指纹分析器

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

剩余 350 字符

有问题?

想贡献?