Destacado de búsqueda de combate de Elasticsearch

Destacado de búsqueda de combate de Elasticsearch

1. Clip de resaltado personalizado

En la consulta básica anterior, simplemente usamos la función de resaltado para marcar las palabras clave de la consulta, y ES <em></em>marcará las palabras clave con etiquetas por defecto . Si queremos usar un campo de etiqueta personalizado, debemos resaltarlo en las propiedades resaltadas más pre_tagsy post_tags. Los ejemplos son los siguientes:

GET website/_search
{
    
    
    "query":{
    
    
        "match":{
    
    
            "title":"自行车"
        }
    },
    "highlight":{
    
    
        "fields":{
    
    
            "title":{
    
    
                "pre_tags":["<strong>"],
                "post_tags":["</strong>"]
            }
        }
    }
}

2. Resaltado de múltiples campos

Al buscar resaltado, puede configurar varios campos para resaltar al mismo tiempo. Por ejemplo, al buscar un titlecampo, queremos que addresslas palabras clave del campo estén resaltadas. En este momento, debemos require_field_matchestablecer el valor del atributo en false. require_field_matchEl valor predeterminado es trueque solo se resaltan los campos coincidentes. Los aspectos más destacados de varios campos son los siguientes:

GET website/_search
{
    
    
  "query": {
    
    
    "match_phrase": {
    
    
      "title": "北京"
    }
  },
  "highlight": {
    
    
    "require_field_match": false,
    "fields": {
    
    
      "title": {
    
    
        "pre_tags": [
          "<strong>"
        ],
        "post_tags": [
          "</strong>"
        ]
      },
      "address": {
    
    
        "pre_tags": [
          "<strong>"
        ],
        "post_tags": [
          "</strong>"
        ]
      }
    }
  }
}

3. Destacar el análisis de rendimiento

ES proporciona tres tipos de marcadores, que son el valor predeterminado highlighter高亮器, postings-highlighter高亮器y fast-vector-highlighter高亮器.

El highlighterresaltador predeterminado es el más básico. highlighterPara realizar la función de resaltado, el resaltador necesita realizar un análisis secundario_source en el documento original guardado en el medio . Su velocidad es la más lenta entre los tres resaltadores. La ventaja es que no requiere espacio de almacenamiento adicional .

postings-highlighterEl resaltador no necesita un análisis secundario para lograr el resaltado , pero es necesario establecer el valor del parámetro index_options en el mapeo de campo en compensaciones y retener el desplazamiento de la palabra clave , que es más rápido que el resaltador. Como:

PUT website
{
    
    
    "mappings":{
    
    
        "properties":{
    
    
            "title":{
    
    
                "type":"text",
                "analyzer":"ik_max_word",
                "search_analyzer":"ik_smart",
                "index_options":"offsets"
            }
        }
    }
}

fast-vector-highlighter高亮器Es el más rápido parawith_opsitions_offsets lograr el resaltado, pero es necesario establecer el valor del parámetro term_vector en el mapeo de campo para guardar la ubicación y la información de compensación de la palabra clave, que ocupa el mayor espacio de almacenamiento, lo cual es una forma de intercambiar espacio por tiempo .

PUT website
{
    
    
    "mappings":{
    
    
        "properties":{
    
    
            "title":{
    
    
                "type":"text",
                "analyzer":"ik_max_word",
                "search_analyzer":"ik_smart",
                "term_vector":"with_positions_offsets"
            }
        }
    }
}

4. Sígueme

Buscar en la cuenta pública de WeChat: el camino hacia una arquitectura java sólida
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/dwjf321/article/details/103960571
Recomendado
Clasificación