Tokenizer-Token-Filter

8

Ich versuche Autocomplete mit Elasticsearch zu implementieren, indem ich denke, dass ich verstehe, wie man es macht ...

Ich versuche, Mehrwörtern (Phrasen) Vorschläge zu erstellen, indem ich die edge_n_grams von ES benutze, während gecrawlte Daten indexiert werden.

Was ist der Unterschied zwischen einem tokenizer und einem token_filter - Ich habe die Dokumente zu diesen gelesen, brauche aber noch mehr Verständnis für sie ....

Zum Beispiel ist ein Token_filter, mit dem ES nach Benutzereingaben sucht? Ist ein Tokenizer, was ES verwendet, um Tokens zu erstellen? Was ist ein Token?

Ist ES möglich, Vorschläge mit mehreren Wörtern zu erstellen, die eines dieser Dinge verwenden?

    
user3125823 11.05.2016, 16:47
quelle

1 Antwort

31

Ein Tokenizer teilt die gesamte Eingabe in Token auf und ein Token-Filter wendet eine Transformation auf jedes Token an.

Nehmen wir zum Beispiel an, dass die Eingabe The quick brown fox ist. Wenn Sie einen edgeNGram Tokenizer verwenden, erhalten Sie die folgenden Tokens:

  • T
  • Th
  • The
  • The (letztes Zeichen ist ein Leerzeichen)
  • The q
  • The qu
  • The qui
  • The quic
  • The quick
  • The quick (letztes Zeichen ist ein Leerzeichen)
  • The quick b
  • The quick br
  • The quick bro
  • The quick brow
  • The quick brown
  • The quick brown (letztes Zeichen ist ein Leerzeichen)
  • The quick brown f
  • The quick brown fo
  • The quick brown fox

Wenn Sie jedoch einen Standard-Tokenizer verwenden, der die Eingabe in Wörter / Token und dann einen edgeNGram Token-Filter aufteilt, erhalten Sie die folgenden Tokens

  • T , Th , The
  • q , qu , qui , quic , quick
  • b , br , bro , brow , brown
  • f , fo , fox

Wie Sie sehen können, hängt die Wahl zwischen einem edgeNgram Tokenizer oder Token-Filter davon ab, wie Sie Ihren Text teilen und würfeln möchten / p>

Ich schlage vor, ich schaue mir das ausgezeichnete Elyzer -Tool an, das eine Möglichkeit bietet, den Analyseprozess zu visualisieren und zu sehen, was produziert wird während jedes Schritts (Tokening und Token-Filterung).

Ab ES 2.2 unterstützt der Endpunkt _analyze auch eine Erklärungsfunktion zeigt die Details während jedes Schrittes des Analyseprozesses.

    
Val 11.05.2016, 17:30
quelle

Tags und Links