Notas de estudo do Elasticsearch (cinco) suplemento de pesquisa detalhada Sugestão - sugestões de consulta

índice

Introdução à sugestão de consulta

Qual é a sugestão de consulta?

Consulta de API sugerida em ES

Sugestão de introdução

Sugestão de termo

sugestão de frase

Conclusão do sugeridor de conclusão automática


Introdução à sugestão de consulta

Qual é a sugestão de consulta?

Sugestões de consulta para fornecer uma boa experiência aos usuários. Incluem principalmente: verificação ortográfica; sugestão automática de palavras de consulta (preenchimento automático)

Consulta de API sugerida em ES

A sugestão de consulta também usa o endereço do terminal _search. Use o nó de sugestão no DSL para definir a consulta de sugestão necessária.

POST twitter/_search
{
  "query" : {
    "match": {
      "message": "tring out Elasticsearch"
    }
  },
  "suggest" : {                           //定义建议查询
                                          //一个建议查询名
    "my-suggestion" : {
      "text" : "tring out Elasticsearch",  //查询文本
      "term" : {                          //使用词项建议器
        "field" : "message"               //指定在哪个字段上获取建议词
      }
    }
  }
}
POST _search
{
  "suggest": {
    "my-suggest-1" : {
      "text" : "tring out Elasticsearch",
      "term" : {
        "field" : "message"
      }
    },
    "my-suggest-2" : {
      "text" : "kmichy",
      "term" : {
        "field" : "user"
      }
    }
  }
}

Várias consultas sugeridas podem usar texto de consulta global

POST _search
{
  "suggest": {
    "text" : "tring out Elasticsearch",
    "my-suggest-1" : {
      "term" : {
        "field" : "message"
      }
    },
    "my-suggest-2" : {
       "term" : {
        "field" : "user"
       }
    }
  }
}

Sugestão de introdução

Sugestão de termo

O termo sugestão implementa a segmentação de palavras do texto de entrada e fornece sugestões de termos para consulta difusa de cada palavra. As palavras sugeridas não são fornecidas por padrão para as palavras que existem no índice, e um certo número de palavras sugeridas é selecionado após a classificação de acordo com os resultados da consulta difusa para as palavras inexistentes.

Opções comumente recomendadas:

 

texto 

Especifique o texto da pesquisa

campo 

Obtenha o campo de pesquisa para palavras sugeridas

analisador 

Tokenizer designado

Tamanho 

Número máximo de palavras sugeridas retornadas por palavra 

ordenar 

Como classificar as palavras sugeridas, opções disponíveis:

Pontuação: classifique pela pontuação primeiro, depois classifique pela frequência do documento e ordem dos termos;

frequência: classifique primeiro pela frequência do documento e, em seguida, classifique por pontuação e termo.

modo_de_insugestão 

Modo de sugestão, que controla a forma de sugerir palavras:

ausente: as palavras sugeridas são fornecidas apenas quando o termo de pesquisa não existe no índice, o valor padrão;

popular: sugira apenas palavras com uma frequência de documento mais alta do que o termo de pesquisa. 

sempre: sempre forneça sugestões de correspondência.

sugestão de frase

A sugestão de frase, com base no termo, considerará a relação entre vários termos, como se eles aparecem no texto original do índice ao mesmo tempo, o grau de adjacência e a frequência da palavra, etc.

POST /ftq/_search
{
  "query": {
    "match_all": {}
  },
  
  "suggest" : {
    "myss":{
      "text": "java sprin boot",
      "phrase": {
        "field": "title"
      }
    }
  }
}

Conclusão do sugeridor de conclusão automática

Um dispositivo de sugestão projetado para conclusão automática de cenas. Neste cenário, cada vez que o usuário insere um caractere, ele precisa enviar uma solicitação de consulta ao back-end para encontrar um item correspondente imediatamente.Quando a velocidade de entrada do usuário é alta, a velocidade de resposta do back-end é mais exigente. Portanto, em termos de implementação, utiliza uma estrutura de dados diferente dos dois Suggesters anteriores.O índice não é completado por inversão, mas os dados analisados ​​são codificados em FST e armazenados junto com o índice. Para um índice no estado aberto, o FST será carregado na memória pelo ES, e a busca do prefixo é extremamente rápida. Mas o FST só pode ser usado para pesquisa de prefixo, que também é a limitação do Completion Suggester.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html

Para usar o preenchimento automático, os campos do índice usados ​​para fornecer sugestões de preenchimento precisam ser especialmente projetados, e o tipo de campo é preenchimento.

PUT music
{
    "mappings": {
        "_doc" : {
            "properties" : {
                "suggest" : {  //用于自动补全的字段
                    "type" : "completion"
                },
                "title" : {
                    "type": "keyword"
                }
            }
        }
    }
}
PUT music/_doc/1?refresh
{
    "suggest" : {
        "input": [ "Nevermind", "Nirvana" ],
        "weight" : 34
    }
}
//Input 指定输入词Weight 指定排序值(可选)
PUT music/_doc/1?refresh
{
    "suggest" : [
        {
            "input": "Nevermind",
            "weight" : 10
        },
        {
            "input": "Nirvana",
            "weight" : 3
        }
    ]}
PUT music/_doc/1?refresh
{
  "suggest" : [ "Nevermind", "Nirvana" ]
}
PUT music/_doc/2?refresh
{
    "suggest" : {
        "input": [ "Nevermind", "Nirvana" ],
        "weight" : 20
    }
}
POST music/_search?pretty
{
    "suggest": {
        "song-suggest" : {
            "prefix" : "nir", 
            "completion" : { 
                "field" : "suggest" 
            }
        }
    }
}
POST music/_search?pretty
{
    "suggest": {
        "song-suggest" : {
            "prefix" : "nir", 
            "completion" : { 
                "field" : "suggest",
                "skip_duplicates": true   //去重
            }
        }    }}
PUT music/_doc/3?refresh
{
    "suggest" : {
        "input": [ "lucene solr", "lucene so cool","lucene elasticsearch" ],
        "weight" : 20
    }
}
//存的是短语

PUT music/_doc/4?refresh
{
    "suggest" : {
        "input": ["lucene solr cool","lucene elasticsearch" ],
        "weight" : 10
    }
}

POST music/_search?pretty
{
    "suggest": {
        "song-suggest" : {
            "prefix" : "lucene s", 
            "completion" : { 
                "field" : "suggest" ,
                "skip_duplicates": true
            }
        }
    }
}

 

Acho que você gosta

Origin blog.csdn.net/qq_34050399/article/details/113111805
Recomendado
Clasificación