HTML 剥离字符过滤器

编辑

从文本中剥离 HTML 元素,并将 HTML 实体替换为其解码值(例如,将 & 替换为 &)。

html_strip 过滤器使用 Lucene 的 HTMLStripCharFilter

示例

编辑

以下 analyze API 请求使用 html_strip 过滤器将文本 <p>I&apos;m so <b>happy</b>!</p> 更改为 \nI'm so happy!\n

resp = client.indices.analyze(
    tokenizer="keyword",
    char_filter=[
        "html_strip"
    ],
    text="I&apos;m so happy</b>!</p>",
)
print(resp)
response = client.indices.analyze(
  body: {
    tokenizer: 'keyword',
    char_filter: [
      'html_strip'
    ],
    text: 'I&apos;m so happy</b>!</p>'
  }
)
puts response
const response = await client.indices.analyze({
  tokenizer: "keyword",
  char_filter: ["html_strip"],
  text: "I&apos;m so happy</b>!</p>",
});
console.log(response);
GET /_analyze
{
  "tokenizer": "keyword",
  "char_filter": [
    "html_strip"
  ],
  "text": "<p>I&apos;m so <b>happy</b>!</p>"
}

该过滤器产生以下文本

[ \nI'm so happy!\n ]

添加到分析器

编辑

以下 创建索引 API 请求使用 html_strip 过滤器配置新的 自定义分析器

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "keyword",
                    "char_filter": [
                        "html_strip"
                    ]
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          my_analyzer: {
            tokenizer: 'keyword',
            char_filter: [
              'html_strip'
            ]
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        my_analyzer: {
          tokenizer: "keyword",
          char_filter: ["html_strip"],
        },
      },
    },
  },
});
console.log(response);
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "html_strip"
          ]
        }
      }
    }
  }
}

可配置参数

编辑
escaped_tags
(可选,字符串数组)不包含尖括号 (< >) 的 HTML 元素数组。该过滤器在从文本中剥离 HTML 时会跳过这些 HTML 元素。例如,[ "p" ] 的值会跳过 <p> HTML 元素。

自定义

编辑

要自定义 html_strip 过滤器,请复制它以创建新的自定义字符过滤器的基础。你可以使用其可配置参数修改过滤器。

以下 创建索引 API 请求使用自定义的 html_strip 过滤器 my_custom_html_strip_char_filter 配置新的 自定义分析器

my_custom_html_strip_char_filter 过滤器跳过删除 <b> HTML 元素。

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "keyword",
                    "char_filter": [
                        "my_custom_html_strip_char_filter"
                    ]
                }
            },
            "char_filter": {
                "my_custom_html_strip_char_filter": {
                    "type": "html_strip",
                    "escaped_tags": [
                        "b"
                    ]
                }
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          my_analyzer: {
            tokenizer: 'keyword',
            char_filter: [
              'my_custom_html_strip_char_filter'
            ]
          }
        },
        char_filter: {
          my_custom_html_strip_char_filter: {
            type: 'html_strip',
            escaped_tags: [
              'b'
            ]
          }
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    analysis: {
      analyzer: {
        my_analyzer: {
          tokenizer: "keyword",
          char_filter: ["my_custom_html_strip_char_filter"],
        },
      },
      char_filter: {
        my_custom_html_strip_char_filter: {
          type: "html_strip",
          escaped_tags: ["b"],
        },
      },
    },
  },
});
console.log(response);
PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "my_custom_html_strip_char_filter"
          ]
        }
      },
      "char_filter": {
        "my_custom_html_strip_char_filter": {
          "type": "html_strip",
          "escaped_tags": [
            "b"
          ]
        }
      }
    }
  }
}