Open Source im professionellen Einsatz
Linux-Magazin 11/2015
© Dmitry Kalinovsky, 123RF

© Dmitry Kalinovsky, 123RF

Schlaue Recherche mit Elasticsearch

Darf's ein bisschen mehr sein?

Websites bieten ihren Lesern zu einem Thema oft auch noch Links zu Artikeln mit ähnlichen Themen an. Die freie Suchmaschine Elasticsearch findet diese blitzschnell und automatisch, nachdem sie alle Dokumente aus einem Korpus analysiert und indiziert hat.

491

Wenn Ratsuchende auf der Webseite Stackoverflow nach Antworten zu Programmierfragen stöbern, steht in der Rubrik »Related« eine Liste mit Links, die sich mit ähnlichen Themen befassen (Abbildung 1). Das hält Nutzer bei der Stange, falls das erste Suchergebnis nicht passt oder die Antwort unzureichend ist. Laut [2] generiert die freie Suchmaschine Elasticsearch [3] diese Links auf der Site in Echtzeit aus der wachsenden und sehr beachtlichen Sammlung von 10 Millionen Stackoverflow-Beiträgen.

Abbildung 1: In der Rubrik Related generiert Stackoverflow mit Elasticsearch Links mit ähnlichen Fragen.

Künstlich schlau

Dabei ist keine richtige Intelligenz am Werk, denn Computer tun sich nach wie vor schwer, den Inhalt eines Dokuments zu verstehen, können also demnach auch keine Dokumente mit verwandten Inhalten finden. Vielmehr stützt sich der verwendete Algorithmus auf einfache Erbsenzählerei, indem er verschiedene Werte für Worthäufigkeit kombiniert und daraus einen Score ableitet.

Elasticsearch hält sich dazu einen so genannten invertierten Index vor, eine vollständige Liste der einzelnen Wörter, die in allen gespeicherten Dokumenten vorkommen. Jedem dieser eindeutigen Wörter weist der invertierte Index eine Liste mit Dokumenten zu, in denen es vorkommt. So kann Elasticsearch blitzschnell etwa eine Liste mit Dokumenten zu einem Suchbegriff ausspucken.

Sucht ein User zum Beispiel nach dem Begriff »perl« , findet Elasticsearch in dem invertierten Index aus Abbildung 2 sofort das Dokument »doc-1« und kann dieses hoffentlich akkurate Suchergebnis präsentieren.

Abbildung 2: Der invertierte Index weist Wörtern Dokumente zu, in denen der Indexer sie fand.

Bei einer Suche nach zwei Wörtern, zum Beispiel »linux cpan« , kommen hingegen zwei Dokumente in Betracht, aber da »doc-2« nur einen Begriff, »doc-3« hingegen beide enthält, verpasst der Algorithmus »doc-3« einen höheren Relevanz-Score. In einer nach dem Score absteigend sortierten Trefferliste steht Dokument »doc-3« dann ganz oben und entspricht wahrscheinlich eher den Erwartungen des Users.

Was heißt relevant?

Aber nicht alle Wörter sind gleich wichtig. Das Wort »file« kommt zum Beispiel in englischsprachigen Dokumenten zu Computerthemen verständlicherweise relativ häufig vor. Sucht der User nach »file linux cpan« , liefern »doc-2« und »doc-3« jeweils zwei Treffer, aber da »linux« für ein Dokument signifikanter als »file« ist, bewertet der Algorithmus »linux cpan« höher als »cpan file« und gibt »doc-3« den Vorzug.

Wie wichtig ein Wort in einem Dokument ist, bestimmt das Tf-idf-Maß [4]. Es weist jenen Wörtern einen hohen Wert zu, die einerseits bestimmend im Dokument vorherrschen, aber andererseits auch nicht allzu häufig in weiteren um einen hohen Score buhlenden Dokumenten stehen, also die Einzigartigkeit des Dokuments untermauern. Der Relevanzwert eines Wortes erhöht sich, je häufiger das Wort im Dokument vorkommt (TF, Term Frequency), geht aber zurück, falls das Wort auch in vielen anderen Dokumenten der Sammlung vorkommt (IDF, Inverse Document Frequency).

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Perl-Snapshot

    Die auf Apache Lucene basierende Volltext-Suchengine Elasticsearch findet zügig Ausdrücke selbst in enorm großen Textsammlungen. Anhand eines Referenzbildes wühlt sie mit ein paar Tricks sogar Fotos aus der Kiste, die jemand in der Gegend geschossen hat.

  • Perl-Snapshot: Schlaue Recherche mit Elasticsearch

    Websites bieten ihren Lesern zu einem Thema oft auch noch Links zu Artikeln mit ähnlichen Themen an. Die freie Suchmaschine Elasticsearch findet diese blitzschnell und automatisch, nachdem sie alle Dokumente aus einem Korpus analysiert und indiziert hat.

  • ELK-Stack

    Eine leistungsfähige Suchmaschine, ein Tool zum Verarbeiten und Normalisieren von Protokollen und eins zum Visualisieren der Auswertungen – Elasticsearch, Logstash und Kibana bilden den ELK-Stack, der auf Systemen mit großem Log-Aufkommen den Karren aus dem Dreck zieht.

  • Elasticsearch 1.0.0 verfeinert seine Suchstrategie

    Die Macher von Elasticsearch bauen auf der Basis von Apaches Suchbibliothek Lucene einen verteilten Echtzeit-Suchserver, der unter der Apache-Lizenz steht. In Version 1.0.0 stecken 8000 Commits von 183 Entwicklern.

  • Mongo DB integriert ElasticSearch

    Die Firma Compose (früher MongoHQ), spezialisiert darauf, die bekannte NoSQL-Datenbank MongoDB als Service anzubieten, integriert nun das Datenanalyse-Tool ElasticSearch.

comments powered by Disqus

Ausgabe 10/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.