十进制数字分词过滤器

十进制数字分词过滤器 #

十进制数字(decimal_digit)分词过滤器用于将各种字符集中的十进制数字字符(0 到 9)规范化为它们对应的 ASCII 字符。当你希望在文本分析中确保所有数字都能被统一处理,而不管这些数字是以何种字符集书写时,这个过滤器就非常有用。

参考样例 #

以下示例请求创建了一个名为 my_index 的新索引,并配置了一个带有十进制数字过滤器的分词器:

PUT /my_index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_decimal_digit_filter": {
          "type": "decimal_digit"
        }
      },
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["my_decimal_digit_filter"]
        }
      }
    }
  }
}

产生的词元 #

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

POST /my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "123 ١٢٣ १२३"
}

text分词:

  • “123”(ASCII 数字)
  • “١٢٣”(阿拉伯 - 印度数字)
  • “१२३”(梵文数字)

返回内容包含产生的词元

{
  "tokens": [
    {
      "token": "123",
      "start_offset": 0,
      "end_offset": 3,
      "type": "<NUM>",
      "position": 0
    },
    {
      "token": "123",
      "start_offset": 4,
      "end_offset": 7,
      "type": "<NUM>",
      "position": 1
    },
    {
      "token": "123",
      "start_offset": 8,
      "end_offset": 11,
      "type": "<NUM>",
      "position": 2
    }
  ]
}