使用 annotated 高亮器

编辑

annotated-text 插件包含一个自定义高亮器,旨在以尊重原始标记的方式标记搜索命中。

# Example documents
PUT my-index-000001/_doc/1
{
  "my_field": "The cat sat on the [mat](sku3578)"
}

GET my-index-000001/_search
{
  "query": {
    "query_string": {
        "query": "cats"
    }
  },
  "highlight": {
    "fields": {
      "my_field": {
        "type": "annotated", 
        "require_field_match": false
      }
    }
  }
}

annotated 高亮器类型旨在与 annotated_text 字段一起使用。

带注释的高亮器基于 unified 高亮器并支持相同的设置,但不使用 pre_tagspost_tags 参数。它不使用类似 HTML 的标记(例如 <em>cat</em>),而是使用与注释中相同的类 Markdown 语法,并注入一个键值对注释,其中 _hit_term 是键,匹配的搜索词是值,例如:

The [cat](_hit_term=cat) sat on the [mat](sku3578)

带注释的高亮器尝试尊重原始文本中任何现有的标记。

  • 如果搜索词完全匹配现有注释的位置,则 _hit_term 键将合并到现有注释的 (...) 部分中使用的 URL 类语法中。
  • 但是,如果搜索词与现有注释的范围重叠,则会破坏标记格式,因此原始注释将被删除,取而代之的是一个仅包含搜索命中信息的新的注释。
  • 原始文本中任何不重叠的注释都将保留在高亮器选择中。