Intelligente Suchmaschine

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel dokumentiert die Arbeiten an einer neuen "Intelligenten Suchmaschine" für das eStudy Portal.

Solr Logo

Suche in eStudy Aktuell

Die einzelnen Module von eStudy leiten sich von einer Generalisierung ab, welche die abstrakten Funktionen search() und html_link_ausgabe() zur Suche anbietet, also ohne Implementation. Die abgeleiteten Module reagieren auf diese Funktionsaufrufe unterschiedlich (Konzept der Polymorphie), weil sie diese mit eigenem Code implementieren. Auf diese Funktionen kann dadurch von anderen Klassen zugegriffen werden ohne dass diese wissen müssen, um welches Modul es sich tatsächlich handelt. Ein Modul kann mit einem Suchtext befragt werden, und dieses durchsucht die in ihm enthaltenen Daten mittels eines einfachen SQL-Statements nach diesem Text, und liefert die Treffer als Hyperlinks zurück. Die Hyperlinks verweisen auf das Dokument, in dem der Suchtext gefunden wurde.

Die Suchfunktion befragt jedes einzelne eStudy-Modul mit dem Suchtext und speichert die Ergebnisse in einem Array. Neben den Hyperlinks zu den einzelnen Dokumenten der Module befindet sich auch die Anzahl der Vorkommnisse des Suchtexts pro Dokument in diesen Daten. Bei der Darstellung der Ergebnisse wird das Dokument mit den meisten Vorkommnissen mit 100% Relevanz bewertet, alle anderen im Verhältnis dazu mit weniger Prozent.

Der Suggestor ("Meinten Sie...?") ist auf Basis des Levenshtein-Algorithmus implementiert. Die Suggestor-Funktion wird nur angezeigt, wenn diese einen alternativen Suchtext vorschlägt, der ungleich dem des Benutzers ist.

Der Indexer arbeitet die ihm zugewiesenen Dateien durch und legt zu dem gefundenen Inhalt einen Index an.

Quelle: "Intelligente Suchstrategien für Web 2.0-Kollaborationsplattformen" von Björn Zunke und Thorsten Habig

Welches API?

Zu Beginn des Kurses Web-Basics war die Aufgabe, eine neue Suchmaschine für das eStudy Portal mit Hilfe der Zend_Search_Lucene Klassen des ZendFrameworks in PHP zu realisieren. Nach einiger Recherche wurde aber klar, dass das Datenaufkommen des Portals, gerade in Form von Dateien, die Performancegrenzen dieser Implementierung bei weitem überschreitet. Es wurde sich dann für das reine Lucene entschieden. Nicht nur die bessere Perfomance, sondern auch die bessere Unterstützung von verschiedenen Dateiformaten waren der ausschlag dafür. Durch den neuen Ansatz einer FH weiten Suchmaschine und dem anbinden der verschiedenen Plattformen (eStudy, Moodle, eGroupware, Homepages) haben sich auch die Anforderungen für unser gesuchtes API drastisch geändert. Gesucht wurde ein zentraler "Suchmaschinenserver" mit bestmöglicher Performance und Dateitypenunterstüzung. Dieses haben wir nun in Solr gefunden.

Was ist Solr?

Solr ist ein OpenSource Enterprise Search Server, basierend auf der Java Lucene Suchbibliothek, mit XML/HTTP und JSON APIs, Suchtreffer highlighting, Facettensuche, Caching und einer Web Administrationsoberfläche.

Die Konfiguration erfolgt über XML Dateien.

Zum Betrieb wird ein Java Servlet Container wie z.B. Apache Tomcat benötigt.

Features

  • Verwendet Lucene library für Volltextsuche
  • Facettensuche
  • JSON, XML, PHP, Ruby, Python und verschiedene Java Binary Ausgabeformate über HTTP
  • HTML Administrationsoberfläche
  • Erweiterbarkeit durch Plugins
  • Verteilte Suche
  • Caching

Quelle: Wikipedia

Solr & Tika

Mit der kommenden Version 1.4 ist Tika ein fester Bestandteil von Solr. Tika ist ein Toolkit, das Metadaten aus nahezu allen Dateiformaten extrahiert. Diese Daten stehen dann der Suchmaschine bei der indizierung von Dokumenten zur verfügung.

Projektplan

Durch den kurzfristigen Wechsel von Lucene auf Solr, muss das aktuelle Meilensteinkonzept verworfen werden.

Das Ziel ist es jetzt bis zum 01.07.2009

  • eine funktionierende Testumgebung einzurichten
  • Dokumentationen zu schreiben, damit alle Teammitglieder auf dem gleichen Wissensstand kommen, da leider Solr nicht so gut Dokumentiert ist wie Lucene

1. Meilenstein (Deadline 29.05.)

Indexdesign - wie wird der Index aufgebaut, welche Felder beinhaltet er, welche Daten werden in Ihm gespeichert oder nur indiziert. Nebenbei laufen eigene Performancetests und kleine Beispielimplementierungen.

2. Meilenstein (Deadline 23.06.)

Die Implementierung ist in der Testumgebung abgeschlossen. Protokollierung der Implementierung in diesem Artikel.

3. Meilenstein (Deadline 01.07.)

Fehler beheben die beim einspielen in die Produktivumgebung entstanden sind.

Team

Weblinks