Vom Suchen und Finden

von c.supnig@gentics.com am 5.11.2012

Stellen Sie sich ein Web ohne Suchmaschinen vor – Google existiert nicht und auch andere Suchmaschinen wurden nie erfunden. Wie würden wir zu den benötigten Informationen kommen, oder unsere Produkte einem breiten Publikum zur Verfügung stellen? Vermutlich würden wir Domains und Linklisten untereinander austauschen und von neuen Online-Shops nur erfahren, weil zufällig ein Kollege dort auch schon einmal bestellt hat. Selbiges gilt auch für unsere tägliche Arbeit. So verbringen wir ca. 10 – 25 Prozent unserer Arbeitszeit damit, Informationen zu suchen. Im Prozess diese Informationsfindung zu optimieren haben Suchmaschinen, ob bemerkt oder eher schleichend, einen immer größeren Stellenwert in unserem Leben eingenommen und werden heutzutage schon als Selbstverständlichkeit angenommen.


Wie können wir nun selbst solche Systeme einsetzen um das Auffinden von Informationen in unserer Software zu vereinfachen? Diese Frage versuche ich im folgenden Artikel genauer zu beleuchten und einige Antworten dafür zu finden.

Das eingesetzte Framework

Gehen wir einmal davon aus, dass wir ein Intranet entwerfen und die Inhalte des Intranets durchsuchbar machen wollen. Ein echter Mehrwert ergibt sich allerdings durch einen single point of contact für möglichst viele Informationsquellen. Um dies zu erreichen, binden wir noch weitere Datenquellen unseres Kunden an die Suche im Intranet an und benötigen somit ein Suchframework, welches in der Lage ist, sowohl strukturierte Daten (Personenverzeichnisse und Produktdatenbanken), als auch semi- und unstrukturierte Daten (HTML-Seiten und Dokumente von einem Netzwerkshare) zu indizieren und zu durchsuchen.

Neben kommerziellen Produkten wie der Google Search Appliance oder der FAST Search von Microsoft gibt es auch sehr gute Open Source Alternativen. Hierzu zählen auf Apache Lucene basierende Projekte wie Apache Solr oder Elasticsearch. Je nach der eingesetzten Technologie müssen wir uns Gedanken über zusätzliche Entwicklungs- und Wartungsaufwände machen. Es ist auch zu bedenken, dass eine Suche ein lebendiges Stück Software ist und somit auch nach Projektabschluss eine weiterführende Betreuung benötigt um die bestmöglichen Ergebnisse zu erzielen.

Die Suchlösung

Jedoch sind nicht nur die Betreuung und das Tuning der Engine selbst ausschlaggebend für den Erfolg. Auch das Design des Benutzerinterfaces sowohl in funktionellem Umfang, als auch in dessen Benutzerfreundlichkeit spielen eine große Rolle. Ein simples Suchfeld mit Autovervollständigung und Unterstützung bei der Eingabe komplexerer Abfragen wird von einer breiten Benutzerbasis oft besser angenommen als ein komplexes Formular, welches mehrere Einstellungsmöglichkeiten zur Suche bietet. Fortgeschrittene, oder spezialisiertere Besucher würden die erweiterten Möglichkeiten allerdings vermissen. Es gilt also wie in vielen anderen Bereichen auch die Gratwanderung zwischen Bedienbarkeit und Funktionalität zu schaffen.

Wie oben angesprochen, ergibt sich ein großer Mehrwert aus dem anbinden aller Datenquellen im Unternehmen. Diese sollen allerdings nicht nur durchsuchbar sein, sondern auch in der Ergebnisliste entsprechend ausgezeichnet werden um dem Benutzer auf einen Blick zu zeigen, wo die einzelnen Ergebnisse gefunden wurden. Bekannte Dokumententypen werden mit ihrem Icon angezeigt und unternehmensinterne, strukturierte Daten wie Hits aus Telefonbüchern können auch entsprechend hervorgehoben werden.

Unter der Haube

Da Apache Lucene mit seinen umfangreichen Erweiterungsmöglichkeiten und exzellenter Performance besticht, möchte ich im Folgenden noch näher auf die Funktionsweise und die Verwendung dieses Frameworks eingehen.

Lucene bietet die Möglichkeit sogenannte Documents mit beliebigen Fields in einen Index aufzunehmen, welcher später mit der eigenen Abfragesprache durchsucht werden kann. Hier muss beachtet werden, dass alle zu indizierenden Felder eines Documents zuerst zu Text umgewandelt werden müssen, da Lucene selbst neben Text nur Nummern versteht. Diese Texte werden beim Indizieren zunächst in ihre Bestandteile (Terms) zerlegt und konfigurierbare Filter (z.B. LowerCaseFilter oder Wortstammrückführung) darauf angewandt. Die unterschiedlichen Felder eines Dokuments können hier separat behandelt werden und dienen bei der späteren Suchabfrage zur weiteren Einschränkung der Ergebnisse (z.B. alle Artikel mit „Suche“ vom Autor „XY“). Ausgewählte Felder können in ihrem Ausgangswert im Index gespeichert werden, welcher bei der Ergebnisausgabe ausgegeben (z.B. eine URL auf den gefundenen Artikel), oder dazu verwendet werden kann einen Abrisstext zu generieren, in welchem alle gefundenen Begriffe (Terms) hervorgehoben werden.

Die eigene Abfragesprache bietet viele Möglichkeiten um die indizierten Dokumente zu durchsuchen und dabei auf einzelne Felder einzuschränken. Logische Verknüpfungen (content:Suche AND author:xy) sind dabei gebauso einfach wie eine Fuzzysuche (content:Suhe~ AND author:xy), oder Bereichsquieries ((description:Snowboard OR name:Snowboard) AND price:[0 500]).


Fazit

Bei der Planung einer Enterprisesuchlösung gilt es neben der technischen Umsetzung viele Aspekte zu beachten. Wichtig ist hier vor allem, die Planung in engem Zusammenspiel mit der Software, in der die Suche eingesetzt werden soll, durchzuführen, um die Integration so Nahtlos wie möglich zu gestalten und damit den maximalen Nutzen aus dem eingesetzten Framework zu ziehen.

Quelle


http://www.ejitime.com/materials...Information.pdf
http://lucene.apache.org/core/



Keine Kommentare vorhanden

Kommentar hinterlassen