社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

999 - Elasticsearch Analysis 05 - Character Filter

歌哥 • 5 年前 • 324 次点击  
阅读 2

999 - Elasticsearch Analysis 05 - Character Filter

HTML Strip Character Filter

  • 将html元素替换成对应的解码值(例如&替换成&)。
  • 示例
POST _analyze
{
  "char_filter": [
    "html_strip"
    ],
  "tokenizer": "keyword", 
  "text": "<p>I&apos;m so <b>happy</b>!</p>"
}
复制代码

产生


I'm so happy!

复制代码

keyword换成standard产生[ I'm, so, happy ]

  • 配置参数
参数 说明
escaped_tags 会被保留的HTML元素

示例

POST _analyze
{
    "char_filter": [
       {
         "type": "html_strip",
         "escaped_tags":["b"]
       }
      ],
    "tokenizer": "keyword", 
    "text": "<p>I&apos;m so <b>happy</b>!</p>"
}
复制代码

产生


I'm so <b>happy</b>!

复制代码

Mapping Character Filter

  • 定义一堆键值对,匹配到键就替换成值。
  • 配置参数
参数 说明
mappings 键值对数组,格式为key => value
mappings_path 键值对文件路径。相对于config或绝对路径。
UTF-8编码。
每行一个键值对,格式为key => value

示例

POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
          "٠ => 0",
          "١ => 1",
          "٢ => 2",
          "٣ => 3",
          "٤ => 4",
          "٥ => 5",
          "٦ => 6",
          "٧ => 7",
          "٨ => 8",
          "٩ => 9"
      ]
    }
  ], 
  "tokenizer": "keyword",
  "text": "My license plate is ٢٥٠١٥"
}
复制代码

产生[ My license plate is 25015 ]

上一个例子是单字符的替换,也可以多字符。

POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
        ":) => _happy_",
        ":( => _sad_"
      ]
    }
  ], 
  "tokenizer": "keyword",
  "text": "I'm delighted about it :("
}
复制代码

产生[ I'm delighted about it _sad_ ]

Pattern Replace Character Filter

  • 使用正则表达式去替换。替换文本可以引用捕获组中的内容。
  • 配置参数
参数 说明
pattern Java正则表达式。必须。
replacement 替换文本。可以使用$1..$9这样的语法,引用捕获组中的值。
flags Java正则表达式flags,多个用|分离,例如"CASE_INSENSITIVE | COMMENTS"。

示例

POST _analyze
{
  "char_filter": [
    {
      "type": "pattern_replace",
      "pattern": "(\\d+)-(?=\\d)",
      "replacement": "$1_"
    }
  ],
  "tokenizer": "keyword",
  "text": "My credit card is 123-456-789"
}
复制代码

产生[ My credit card is 123_456_789 ]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46606
 
324 次点击