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/
0 Kommentare
An der Diskussion teilnehmenKeine Kommentare vorhanden
Kommentar hinterlassen