Ricerca…


Osservazioni

Gli analizzatori prendono il testo da un campo stringa e generano token che verranno utilizzati durante l'esecuzione di query.

Un analizzatore opera in una sequenza:

  • CharFilters (zero o più)
  • Tokenizer (uno)
  • TokenFilters (zero o più)

L'analizzatore può essere applicato ai mapping in modo che quando i campi vengono indicizzati, viene eseguito su una base di token anziché sulla stringa nel suo complesso. Quando si esegue una query, la stringa di input verrà eseguita anche attraverso l'Analyzer. Pertanto, se normalizzi il testo in Analyzer, esso corrisponderà sempre anche se la query contiene una stringa non normalizzata.

Mappatura

Un analizzatore può essere applicato a una mappatura utilizzando "analizzatore", per impostazione predefinita viene utilizzato l'analizzatore "standard". In alternativa, se non si desidera utilizzare un analizzatore (poiché la tokenizzazione o la normalizzazione non sarebbe utile) è possibile specificare "index": "not_analyzed"

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer":  "my_user_name_analyzer"
        },
        "id": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

Multi-campi

A volte può essere utile avere più indici distinti di un campo con diversi analizzatori. È possibile utilizzare la capacità multi-campi per farlo.

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer": "standard",
          "fields": {
            "special": {
               "type": "string",
               "analyzer": "my_user_name_analyzer"
            },
            "unanalyzed": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

Quando si esegue una query, invece di utilizzare semplicemente "user.name" (che in questo caso utilizzerà ancora Stanard Analyzer) è possibile utilizzare "user.name.special" o "user.name.unanalyzed". Si noti che il documento rimarrà invariato, questo influisce solo sull'indicizzazione.

analizzatori

L'analisi in elasticsearch entra nel contesto quando sei disposto ad analizzare i dati nel tuo indice.

Gli analizzatori ci consentono di eseguire quanto segue:

  • Abbreviazioni
  • Stemming
  • Gestione degli errori di battitura

Guarderemo ognuno di loro ora.

  1. Abbreviazioni :

    Usando gli analizzatori, possiamo dire a elasticsearch come trattare le abbreviazioni nei nostri dati, ad es. Dr => Dottore così quando cerchiamo la parola chiave dottore nel nostro indice, elasticsearch restituirà anche i risultati che hanno menzionato in loro.

  1. Stemming :

    L'uso dello stemming negli analizzatori ci permette di usare parole base per verbi modificati come

    parola modifiche
    richiedere requisito, richiesto
  1. Gestione degli errori di battitura :

    Gli analizzatori forniscono anche la gestione degli errori mentre durante l'interrogazione se stiamo cercando una parola specifica che dica "resurrezione", elasticsearch restituirà i risultati in cui sono presenti errori di battitura. Tratterà errori di battitura come resurection, resurrection come lo stesso e riaccorderà il risultato.

    parola modifiche
    risurrezione resurection, ressurection

Analizzatori in Elasticsearch

  1. Standard

  2. Semplice

  3. Lo spazio bianco

  4. Stop

  5. Parola chiave

  6. Modello

  7. linguaggio

  8. Palla di neve

Ignora l'analizzatore di casi

A volte, potremmo aver bisogno di ignorare il caso della nostra query, in relazione alla corrispondenza nel documento. In questo caso è possibile utilizzare un analizzatore per ignorare il caso durante la ricerca. Ogni campo dovrà contenere questo analizzatore nella sua proprietà, al fine di lavorare:

"settings": {
        "analysis": {
            "analyzer": {
                "case_insensitive": {
               "tokenizer": "keyword",
               "filter": ["lowercase"]
            }
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow