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?
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.
Tags und Links tokenize elasticsearch token