Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Elasticsearch Grundkurs

Texte suchen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Insbesondere zur Suche innerhalb von Texten stellt Elasticsearch umfangreiche Funktionen zur Verfügung. Machen Sie sich in diesem Video mit den wichtigsten Funktionen vertraut und lassen Sie sich die jeweiligen Einsatzmöglichkeiten erklären.

Transkript

Dank Lucene ist Elasticsearch besonders im Durchsuchen von Texten gut geeignet. Um die besonderen Fähigkeiten der Textsuche von Elasticsearch kennen zu lernen, besänftigen wir uns im Rahmen dieses Videos besonders mit Textfeldern, als auch dem Scoring-Verfahren von Elasticsearch. Um in diesem Video mit etwas mehr Daten arbeiten zu können, extrahiere ich aus der Seite der best bewerteten Filme auf IMDb, alle Indentifier anhand der URL. Dafür beginne ich nun also zunächst einmal mit den Bibliotheken innerhalb meines "Python" Notizbuches. In diesem Fall benötige ich neben "Requestes" und "JSON", auch die Bibliothek "re", für "regular expressions". Als nächstes besorge ich mir den HTML-Inhalt der 250 besten Filme auf IMDb. Mit Hilfe der "regular expression", "TT " und sieben folgenden Zahlen, extrahiere ich alle Identifier der 250 Filme. Zusätzlich bereinige ich diese Liste von Filmen von Duplikaten, da die URL unter Umständen mehrfach vorkommt. Für jeden Film in dieser Liste, speichere ich nun ein Dokument, innerhalb meiner Elasticsearch-Datenbank ab. Wenn alles korrekt verlaufen ist, befinden sich nun 250 verschiedene Filme in meinem "Movies"-Index. Als nächstes starte ich nun eine Suche auf diesem Index. Dabei verwende ich die übliche Syntax, über "query", "match" und "titel" und suche hier speziell nach dem Wort "Godfather". Allerdings habe ich hier ein "h" vergessen. Das bedeutet, ich habe das Wort bewusst falsch geschrieben, sowie es auch oft bei Suchen im Internet vorkommt. Neben dieser Angebe, spezifiziere ich noch eine "fuzziness" von "AUTO". Damit starte ich also eine sogenannte "Fuzzy"-Suche. Das bedeutet, Elasticsearch versucht auch Worte zu identifizieren, die ähnlich geschrieben sind, wie das von mir angegebene Wort. Wenn ich also nun diese Suche starte, finde ich trotz meines Schreibfehlers in "Godfather", den Film "The Godfather", als auch den zweiten Film "The Godfather: Part II". Verwende ich der als ein einziges Wort innerhalb eines Suchausdrucks, wie beispielsweise bei "The Gothfather", kann ich Besonderheiten in der Wortstellung aktivieren. Das bedeutet, mit der Suche vom Typ "Phrase" und einem "Sloppiness"-Faktor von 1, erlaube ich, dass eine Verschiebung bis zu einem Wort stattfinden kann, innerhalb der Suche. Das bedeutet, dass "The" und "Godfather", in Verschiebungskonstellationen von bis zu einem Wort auftreten können. Effektiv bedeutet das allerdings, dass keine der Worte in einer unterschiedlichen Reihenfolge angegeben werden können, weshalb es hier zu keinem Suchergebnis kommt. Erhöhe ich diesen "Sloppiness"-Faktor nun auf bis zu 2 Worte und starte die Suche, so finde ich, trotz falscher Wortstellung, auch den Titel "The Godfather". Ähnlich auch für den zweiten Teil. Als nächstes nutze ich nun die Möglichkeit in mehr als einem Feld zu suchen. Dafür verwende ich nicht den klassischen Match "query", sondern den "multi_match". Denn hier kann ich nun multiple Felder als Suchbasis angeben. In diesem Fall also "Plot", als auch "Genre". Ich suche hier nach dem Wort "Crime". Das bedeutet, wenn das Wort "Crime" im Plot, als auch im Genre steht, oder in einem von beiden, werde ich ein Suchergebnis erhalten. Hierbei verwende ich die Strategie "best_fields". Das bedeutet, bei der Berechnung des Scoring-Wertes für meine Suche, werden besonders die Dokumente gut bewertet, bei denen das Wort "Crime" sowohl im Plot, als auch Genre steht. Außerdem gebe ich hier an, dass ich lediglich maximal 10 Dokumente aus dieser Suche erhalten möchte. Den höchsten Scoring-Wert in dieser Suche, hat nun also der Film "Rashomon". Wichtig ist, je besser die Wortstellung des Wortes, das ich gesucht habe, hier also "Crime" am Anfang des Genre, als auch relativ am Anfang des Plots, umso höher der Scoring-Wert beim Identifizieren der Ergebnisse. Denn beispielsweise im nächsten Suchergebnis, dem Film "Fargo", ist der Scoring-Wert nun niedriger. Hier steht zwar auch das Wort "Crime" am Anfang des Genre, allerdings sind deutlich mehr Buchstaben zwischen dem Beginn des Plots und dem Wort "Crime". Neben der "best_fields"-Strategie, gibt es auch die sogenannte "most_fields"-Strategie. Der wesentliche Unterschied hierbei ist, dass für das Berechnen des Scoring-Wertes, das am höchsten bewertete Feld herangezogen wird. Ist also beispielsweise das Wort "Crime" am Anfang des Genre, gilt es als wichtiger, als wenn das Wort "Crime" auch im Plot steht und sich in einer nach weiter hinten versetzten Position befindet. Hier erhalte ich nun also ähnliche Ergebnisse, mit anderen Scoring-Werten. Zu guter Letzt, habe ich noch die Möglichkeit, besonderen Wert auf bestimmte Felder zu legen, Indem ich diesem, einen Ranking-Boost gebe. Dafür verwende ich die Instruktion "Zirkumflex" und einen Scoring-Multiplikator. Hiermit sage ich also aus, dass im Scoring-Verfahren das Feld Plot 5 Mal so wichtig bewertet werden soll wir Genre. Das heißt, dass vorher mit 5 bewertete Dokument, für den Film "Rashomon", hat nun einen Scoring-Wert von 20, da das wichtigste Feld Plot ist und dieser nun fünfmal multipliziert wurde. Kennt man nun also die Möglichkeiten der Textsuche von Elasticsearch, kann man mit dem "Fuzziness-Operator" Schreibfehler des Nutzers einfach korrigieren lassen und trotzdem Suchergebnisse finden. Genauso ist es möglich, falsche Wortstellungen mit Hilfe von Phrasen zu ignorieren. Beim Bewerten von Dokumenten innerhalb der Textsuche, haben wir die Verfahren nach "best_fields" oder "most_fields" gesehen. Wobei "best_fields" eine Summe aus beiden Feldern dargestellt hat und "most_fields" das jeweils wichtigere Feld als Scoring-Wert benutzt hat. Sollten wir etwas mehr Wert auf ein bestimmtes Feld legen, können wir dessen Relevanz mithilfe des Zirkumflex-Operator stärken.

Elasticsearch Grundkurs

Lernen Sie, Elasticsearch und seine Einsatzgebiete zu verstehen und mit der API zu interagieren.

2 Std. 19 min (23 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Themen:
Programmierung
Exklusiv für Abo-Kunden
Erscheinungsdatum:23.02.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!