OpenSearch

Transcription

OpenSearch
OpenSearch
48966 Michael Losert
49280 Dominik Grimmeisen
49022 Bernd Hefke
Sommersemester 2015
1
Inhaltsverzeichnis
1 Einleitung
1.1 Relevanz des Themas . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Aufbau des Dokuments . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
3
2 Grundlagen
2.1 Suchmaschinen . . . . . . . .
2.1.1 Suchmaschinentypen .
2.1.2 META-Suchmaschine
2.2 XML und Atom . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
5
5
3 OpenSearch
3.1 Entstehung . . . . . . . . . . . . . . . . .
3.2 OpenSearch Descripton Document . . . .
3.2.1 Pflicht Elemente . . . . . . . . . .
3.2.2 Optionale Elemente . . . . . . . .
3.2.3 Mehrfache Elemente . . . . . . . .
3.3 URL Element: Aufruf einer Suche . . . . .
3.4 Query Element . . . . . . . . . . . . . . .
3.5 Anforderung an die Suchmaschine . . . .
3.6 Response . . . . . . . . . . . . . . . . . .
3.7 Clientseitige Verwendung von OpenSearch
3.7.1 Java Beispiel . . . . . . . . . . . .
3.7.2 Browserintegration . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
7
8
8
9
12
13
13
14
14
16
4 Evaluation
4.1 Serverseitige Bereitstellung . . . . . . . . . . . . . . . . . . . . .
4.2 Clientseitige Verwendung . . . . . . . . . . . . . . . . . . . . . .
4.3 Verbreitung OpenSearch . . . . . . . . . . . . . . . . . . . . . . .
17
17
17
18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Zusammenfassung und Ausblick
19
5.1 Sinnhaftigkeit von OpenSearch . . . . . . . . . . . . . . . . . . . 19
5.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2
1
Einleitung
1.1
Relevanz des Themas
Suchmaschinen spielen in unserem heutigen digitalen Umfeld eine massive Rolle. Sie werden von fast Jedem täglich genutzt. Denkt man Suchmaschinen, denkt
man an Größen der Websuche, wie bspw. Google, Yahoo oder Bing. Allerdings
sind Suchmaschinen mehr und auch bspw. Online-Shops, wie bspw. Amazon
oder Zalandoo, wären ohne Suchmaschinen sehr unkomfortabel. Dirk Lewandowski geht sogar soweit, dass er den Suchmaschinen “eine enorme gesellschaftliche Bedeutung“ [2, 2] zuspricht.
Ein weiteres Phänomen um Suchmaschinen zeigt sich, dass das Wort “googeln”
zu einem Synonym für die Websuche in der Suchmaschine von Google geworden
ist.
1.2
Zielsetzung
Die OpenSearch-Spezifikation bietet eine Schnittstelle um Suchmaschinenergebnisse abzufragen. Weiter gibt es die Möglichkeit Suchmaschinenvorschläge im
Browser zu integrieren.
Es sollen die Verwendungsmöglichkeiten der Spezifikation für den Client aufgezeigt werden, sowie die Einbindung in den Server zu geben. Es soll anhand eines
Java-Beispiels aufgezeigt werden, wie die Spezifikation verwendet werden kann.
Serverseitig wird die Einbindung der Spezifikation in eine bestehende Suchmaschine mittels dem “Description Documents” aufgezeigt.
Am Ende sollen die Fragen zu Zukunftsaussichten und zur aktuellen Verwendung von OpenSearch geklärt werden. Außerdem soll herausgefunden werden,
ob es heute noch Sinn macht die Spezifikation in neue Projekte zu integrieren.
Kurz gesagt sollen die Fragen
• Welche Funktionen bietet die OpenSearch-Spezifikation?
• Wie nutzt man OpenSearch Client- und Serverseitig
• Wie verbreitet ist die OpenSearch-Spezifikation und welche Zukunftsaussichten besitzt sie?
geklärt werden.
1.3
Aufbau des Dokuments
Zunächst wird in den Grundlagen ein kleiner Einblick in das Thema Suchmaschinen, API und XML gegeben. Es soll die Verbreitung und die Funktionsweise
von Suchmaschinen erläutert werden. Im weiteren werden Grundlagen der API
und XML erklärt auf die, die nachfolgenden Kapitel aufbauen.
Im Hauptteil wird zunächst auf die allgemeine Informationen über die OpenSearchSpezifikation eingegangen, wie die Entstehung. Danach werden die Anforderungen, die serverseitigen Einbindungsmöglichkeiten mit dem Desciption Document
und die clientseitige Verwendung mit der URL, einem Beispielclient in Java und
3
dem Response-Objekt.
Im Kapitel der Evaluation werden die Ergebnisse der Arbeit kritisch betrachtet.
Es soll die Frage geklärt werden, ob OpenSearch für Anwender und Suchmaschinenbetreiber aktuell Sinn ergibt. Am Ende des Dokuments soll die Sinnhaftigkeit von OpenSearch untersucht werden. Es wird auf die Vor- und Nachteile für
Anwender bzw. Suchmaschinenbetreiber eingegangen. Weiter wird ein Ausblick
über die Zukunftschancen gegeben.
2
2.1
Grundlagen
Suchmaschinen
Suchmaschinen dienen der Suche im Internet oder auf einzelnen Webseiten.
Die Suchergebnisse werden im größtenteils Zeilenweise angezeigt und bei vielen
Ergebnissen kommt eine Paginierung zum Einsatz. Die Suchergebnisse können
bspw. Webseitenlinks, Bilder, Produkte oder fast alles andere im Internet sein.
Die erste Suchmaschine entstand schon 1990 mit dem Projekt Archie, welches
von Alan Emtage, Bill Heelan und J.Peter Deutsch der McGill Universität in
Montreal. Die Suchmaschine lud eine Liste aller Dateien der öffentlichen FTPServer herunter und indexierte sie in einer Datenbank.
Der Marktführer bei Suchmaschinen ist eindeutig Google und das amerikanische
Unternehmen konnte schon lange Yahoo den Rang ablaufen.
Abbildung 1: Suchmaschinen Marktanteile in Europa im Jahr 2015 [3]
Aufgrund des hohen Marktanteils bekommt Google immer weitere Widersacher
und deshalb sind die Marktanteile der anderen Anbieter wieder langsam am
zunehmen.
4
2.1.1
Suchmaschinentypen
Suchmaschinen tauchen im Internet in vielen verschiedenen Formen auf. Die
bekanntesten Suchmaschinen sind Google, Bing und Yahoo. Diese Suchmaschinen durchsuchen das WWW mittels Webcrawlern und indexieren die gefunden
Seiten. Ein Anwender nutzt die Suchmaschine um Webseiten, Bildern, etc. nach
einem Schlüsselwort zu durchsuchen. Die meisten großen Anbieter haben mittlerweile auch eine eigene Syntax für die Suchergebnisse entwickelt um Wörter
mit verschiedenen Operatoren zu verbinden. Weiter bieten sie umfangreiche
Schnittstellen, sogenannte API”s, um die Suchmaschine über eigene Software
zu befragen und Ergebnisse zu erhalten.
Allerdings gibt es noch viele weitere Suchmaschinen. Heute findet man auf den
meisten Webseiten eine Suchmaschine um die Webseite selbst zu durchsuchen.
Die Anwender können damit schnell nach gezielten Informationen auf der Webseite suchen.
Eine weitere weit verbreitete Suchmaschinenform ist die Produktsuche. Prinzipiell ist es eine Spezialisierung der zuvor genannten Variante. Die Suche ist
bei Online-Shops zu finden und fokussiert sich, wie der Name schon sagt, auf
die Suche nach Produkten. Der Anwender kann mittels einem Schlüsselwort die
angeboten Produkte auf einer Seite suchen. Größen, wie Amazon und eBay,
haben die Suche weiterentwickelt und perfektioniert.
Als letzte Variante gibt es noch die spezialisierte Suchmaschinen. Diese Suchmaschinen kommen meist in speziellen Gebieten zum Einsatz und funktionieren
ähnlich den Standard-Suchmaschinen. Die Suchmaschinen werden mit weiteren
Erweiterungen ausgestattet und konzentrieren sich auf spezielle Themen, wie
bspw. medizinische Begriffe. Die Erweiterungen sind meist auf das Themengebiet angepasst und helfen dem Anwender bessere Ergebnisse zu erzielen. In diesen Bereich können auch die META-Suchmaschinen fallen, welche im nächsten
Kapitel genauer beschrieben werden.
2.1.2
META-Suchmaschine
Ein wesentliches Merkmal von Meta-Suchmaschinen ist, dass die Suchanfragen
an mehrere einzelne Suchmaschinen gestellt werden. Die Ergebnisse werden aufgearbeitet und dem Anwender einheitlich dargestellt. Der große Vorteil dieser
Art von Suche besteht darin, dass umfangreichere Ergebnisse erzielt werden
können und bei der Aufarbeitung können die Dubletten entfernt werden, die
Reihenfolge der Ergebnisse den Anforderungen entsprechend sortiert oder gruppiert werden.
2.2
XML und Atom
XML ist eine sogenannte Extensible Markup Language (dt. erweiterbare Auszeichnungssprache). Die Daten werden Menschen- und Maschinenlesbar dargestellt und in hierarchischer strukturierten Form aufgebaut. Die offene Spezifikation XML 1.0 ist von dem W3C ausgegeben worden aber es existieren auch
weitere offene Spezifikationen. Die Struktur und Form der XML-Datei kann
mittels Schema-Dateien geprüft werden. In diesen Schema-Dateien gibt man
5
den Aufbau und die Form an und mit dieser kann die XML-Datei geprüft werden, somit können fehlerhafte XML-Dateien einfach erkannt werden und der
Empfänger, der die XML-Datei verwenden will, benötigt nur die Schema-Datei.
Die Kommunikation besteht aus reinen Textdateien und kann auf allen Plattformen mit den untersützten Encodings verwendet oder gelesen werden.
Atom, das Atom Syndication Format (ASF), ist ein Standard für den plattformunabhängigen Austausch von Informationen. Es ist ein XML-Format und
wird hauptsächlich im Internet für z.B. Web-Feeds genutzt.
3
OpenSearch
OpenSearch bietet die Möglichkeit, das Interface einer Suchmaschine zu beschreiben. Das beinhaltet einerseits einer Erklärung für den Client, wie der
Aufruf stattfindet und welche Optionen oder Parameter, die verwendet werden
können. Zum anderen aber auch die Voraussetzungen, welche die Suchmaschine
selbst erfüllen muss. Zum Beispiel welche Suchen sie anbietet, welche Optionen
wahrgenommen werden müssen und in welchem Format die Antwort zurück
gegeben wird.
Wie bei einer Interface Klasse in Java wird die Suche selbst von der dahinter
liegenden Suchmaschine ausgeführt.
3.1
Entstehung
OpenSearch wurde von Amazon und der Tochterfirma A9.com entwickelt und
die erste Version 1.0 wurde von Jeff Bezos auf der O’Reilly Emerging Technology Conference am 15. März 2005 vorgestellt. Am 6. Dezember 2005 wurde die
letzte Version 1.1 vorgestellt.
Die OpenSearch Spezifikation ist durch A9 unter der Creative Commons AttributionShare Alike 2.5 Lizenz geschützt und erlaubt die Verwendung und Erweiterung
in kommerziellen und nichtkommerziellen Projekten allerdings müssen angemessene Urheber- und Rechtsangaben gemacht werden und die Weitergabe
muss ebenfalls in dieser Lizenz erfolgen.
Amazon und A9 haben die Entwicklung von OpenSearch eingestellt. Die noch
bestehende OpenSearch Webseite opensearch.org ist einem veraltet Zustand mit
toten Links und somit ist eine weitere Version auszuschließen.
3.2
OpenSearch Descripton Document
Das OpenSearch Descripton Document hat eine beschreibende Rolle. Wenn ein
Client die Suche automatisch verwenden will, greift er auf dieses zu und lernt
daraus, wie sie zu verwenden ist. Die zu verwendenden Tags werden im OpenSearch Namespace festgelegt. Soll diese um eigene erweitern werden, müssen
sie ebenfalls durch einen XML Namespace definiert werden. Undefinierte Tags
sollen ignoriert werden.
Listing 1: Minimales Muster OOSD
1
<?xml version="1.0" encoding="UTF-8"?>
6
2
3
4
5
6
7
8
9
10
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>abc.de Suche</ShortName>
<Description>Durchsucht die Seite abc.de</Description>
<Tags>example web</Tags>
<Contact>[email protected]</Contact>
<Url type="application/rss+xml"
template="http://example.com/?q={searchTerms}
&amp;pw={startPage?}&amp;format=rss"/>
</OpenSearchDescription>
Der erste Tag beschreibt das verwendete XML Format, es wird bei der Verarbeitung nicht als Element mit aufgelistet. Als Kodierung wird UTF-8 verwendet.
Eine Angabe zum üblichen XML Document type definition wird nicht gemacht.
Die Gültigkeit wird über den Namespace erreicht. Eine feste DTD würde das
Hinzufügen von eigenen Parametern erschweren.
Das Root Element “OpenSearchDescription“ umschließt das komplette OSDD,
alle Elemente werden darunter aufgelistet. Das Schließen des Tags ist somit
auch die letzte Zeile des OSDDs. Darin werden die XML Namespaces als Attribute angelegt. Der OpenSearch Namespace auf a9.com muss immer mit angegeben werden. Für zusätzliche eigene muss ein Name mit angegeben werden,
über denn später Elemente daraus identifiziert werden können. Dieser muss mit
einem Doppelpunkt an das xmlns Attribut angehängt werden. Nur der OpenSearch Namespace darf ohne zusätzlichen Namen gelistet werden.
Listing 2: Root Element aus der OSDD von nature.com
1
2
3
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:sru="http://www.nature.com/opensearch/ns/opensearch/extensions/sru/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
Die Elemente innerhalb des Root Element sind in drei Kategorien eingeteilt. Es
Pflichtelemente, die genau einmal enthalten sein müssen und optionale Elemente, die einmal enthalten sein können. Außerdem noch Elemente, die beliebig oft
enthalten sein können.
3.2.1
Pflicht Elemente
ShortName
Es enthält den Namen der Suche, über den der Client sie identifizieren
soll. Es können bis zu 16 Zeichen verwendet werden.
Description
Es enthält eine Beschreibung der Suche, die auch für Menschen lesbar
sein soll. Das heißt, die Beschreibung soll in ganzen Sätzen geschrieben
sein und die Grammatik Regeln befolgen. Es können bis zu 1024 Zeichen
verwendet werden.
7
3.2.2
Optionale Elemente
LongName
Wie der ShortName kann die Suche dadurch identifizieren. Es können
jedoch bis zu 48 Zeichen verwendet werden.
Tags Darin kann eine Beschreibung der Suche durch Tags angegeben werden.
Die verschiedenen Tags werden durch ein Leerzeichen getrennt. Es können
maximal 256 Zeichen verwendet werden.
Attribution
Enthält einen Hinweis darauf, wer für Aufbereitung der Suchergebnisse
verantwortlich ist. Meist wird die Suchmaschine oder ihr Betreiber betitelt.
Developer
Enthält den Namen des Entwicklers.
Contact
Damit kann die Kontaktmöglichkeit zum Entwickler, bzw Betreiber der
Suche angegeben werden. Es muss eine gültige Email Adresse mit maximal
256 Zeichen verwendet werden.
SyndicationRight
Damit kann der Betreiber vorgeben, zu was der Client berechtigt ist. Dabei gibt es 4 Stufen. “open“ : Es liegen keine Beschränkungen vor. Wenn
das Element nicht angegeben wird, gilt dies standardmäßig.
“limited“ : Die Ergebnisse dürfen beliebig weiterverarbeitet, jedoch nicht
an andere Suchmaschinen weitergegeben werden. “private“ : Die Ergebnisse dürfen weiterverarbeitet werden, jedoch nicht präsentiert werden.
“closed“ : Die Suchmaschine wird keine Ergebnisse zurückliefern.
AdultContent
Standardmäßig ist dieser Wert auf false gesetzt. Besteht Grund zur Vermutung, das die Suchmaschine jugendgefährdende Ergebnisse könnte, sollte dieses Element auf True gesetzt werden. Es liegt jedoch kein klarer
Maßstab an, wann dies der Fall ist.
3.2.3
Mehrfache Elemente
Image
Zur Visualisierung, beispielsweise in einem Browser Plugin, kann ein Icon
vorgeschlagen werden. Wenn dieses Element mehrfach angegeben ist, kann
der Client die bevorzugte Größe und Typ selbst auswählen. Typ, Breite
und Höhe sind dabei optionale Attribute. Als Typ muss ein gültiger MIME
Type angegeben werden.
Language
Jede unterstützte Sprache wird in einem Language Element aufgeführt.
Wird keine aufgeführt, wird auf die Sprache bei einer Suche nicht berücksichtigt.
Aufgeführte Sprachen müssen dem Standard RFC 5646 entsprechen.
8
InputEncoding
Es gibt an, welche Kodierung bei der Eingabe verwendet wird. Wie auch
bei der Sprache werden hier alle unterstützen Kodierungen in einzelnen
Elementen aufgelistet. Dabei dürfen nur Kodierungen verwendet werden,
die von der IANA anerkannt werden. Jedoch, sollte kein besonderer Grund
vorliegen, sollte der Standard UTF-8 verwendet werden.
OutputEncoding
Für die Kodierung der Ausgabe gilt das gleiche, wie bei der Eingabe.
URL
Durch das URL Element wird der Aufruf einer Suche definiert. Es wird
in Kapitel 3.3 weiter ausgeführt.
Query
Die Verwendung wird in Kapitel 3.4 aufgeführt.
3.3
URL Element: Aufruf einer Suche
Der Aufruf einer Suche erfolgt über die URL. Das gültige Format für die URL
wird in Form von Templates im OpenSearch Description Document festgelegt.
Es können mehrere grundsätzliche unterschiedliche Templates angelegt werden. Dadurch können verschiedene Suchvorgänge angesprochen werden oder
verschiedene Parameter, wie Filter, Antwortformat oder Anfragetyp, verwendet werden. Es ist sinnvoll ein Template mit Antwort in html anzubieten . Des
weiteren für die Suchvorschläge beim Eintippen im Browser den Antwort Typ
äpplication/x-suggestions+json”. Und für die automatische Verarbeitung eine
auf XML basierte Antwort Formate, zu verwenden.
Nature.com verwendet insgesamt sieben unterschiedliche Templates. Bei der
Standardsuche werden auf die meisten OpenSearch typischen Parameter verzichtet und das Ergebnis wird in einem html Format direkt auf der Webseite
angezeigt. Dies stellt eine typische Suche dar, die auf den meisten Webseiten
eingebunden ist.
Die anderen Templates bieten die Rückgabe Formate xml, rss, sru, atom, json
und javascript. Das gewünschte Format ist hierbei fester Teil der URL. Das
Rückgabe Format muss mit dem Attribut type festgelegt werden und kann
nicht erst als Parameter übermittelt werden. Gültig sind hierbei alle Formate
nach MIME Spezifikation.
Listing 3: Template aus der OSDD von nature.com
1
2
3
4
5
6
<Url type="application/xml" indexOffset="1" template="
http://www.nature.com/opensearch/request
?interface=opensearch
&operation=searchRetrieve
&query={searchTerms}
&queryType={sru:queryType?}
9
7
8
9
10
&startRecord={startIndex?}
&maximumRecords={count?}
&sortKeys={sru:sortKeys?}
&stylesheet={sru:stylesheet?}"/>
Für dieses Template lautet eine gültige URL mit dem Suchbegriff Sonne:
http://www.nature.com/opensearch/request?interface=opensearch&operation=
searchRetrieve&query=Sonne&startRecord=1
Das Template kann eine beliebige Zahl Parameter enthalten. Bei einer Suchanfrage muss der Client die in der geschweiften Klammer gehaltenen Begriffe
durch eigene Werte ersetzen. Die Begriffe dienen zur Identifikation, welcher
Inhalt erwartet wird. Optionale Parameter werden durch ein Fragezeichen in
der Klammer gekennzeichnet und müssen nicht mit angegeben werden. Wird
ein Pflichtparameter nicht gesetzt, muss die Suche nicht erfolgreich sein. Bei
nature.com wird jedoch trotzdem ein Ergebnis zurückgegeben, da die Suche auf
die Standardsuche umgeleitet wird, die Antwort ist dann wieder im html Format, statt XML.
Die Namen der Parameter können selbst festgelegt werden. Die Begriffe dazu
müssen jedoch in einem XML Namespace definiert werden. Wird kein Prefix
verwendet, wird davon ausgegangen, dass der Begriff Teil des OpenSearch Namespaces ist. Entsprechend dürfen auch nur diese ohne Prefix gelistet werden.
Zusätzliche Namespaces werden im OSDD mit identifizierendem Namen festgelegt. Der korrekte Aufruf lautet dann
(Name des Namespace):(Begriff).
Dem obigen Beispiel entsprechend ßru:sortKeys”.
Werden Parameter aus dem OpenSearch Namespaces nicht mit angegeben, soll
die Suchmaschine einen Standardwert verwenden.
Zu den von OpenSearch vordefinierten Parameter zählen:
“searchterms“
Der Platzhalter für den Suchbegriff kann beliebig gesetzt werden, muss
allerdings URL codiert sein. Zum Beispiel wird für den Umlaut “ö“ die
Zeichenfolge %F6 eingesetzt. Es kann keine Suche ohne Suchbegriff ausgeführt werden. Bei einer Suche mit mehreren Begriffen werden beide
an dieser Stelle eingesetzt. Trennzeichen, wie bei Google die “&“ Verknüpfung oder Ausschluss durch ein “-“, werden mit an die Suchmaschine
übertragen und von dieser Interpretiert. OpenSearch bietet hierfür keine
Vorlage.
“count“
Gibt an, wie viele Ergebnisse in einer Antwort erwünscht sind. Da die
Suchmaschine ebenfalls Begrenzungen haben sollte, um Missbrauch durch
zu hohe Werte zu verhindern, muss die Anzahl aus dem entsprechenden
10
Tag in der Antwort auslesen. Es muss eine positive ganze Zahl angegeben
werden. Der Standardwert wird von der Suchmaschine vorgegeben.
“startPage“
Gibt an, die wievielte Seite mit Ergebnissen übermittelt werden soll. Ist
der Countwert auf 10 und startPage auf 5, wird die Antwort aus Ergebnis
Nummer 50-59 bestehen. Es muss wieder eine positive ganze Zahl angegeben werden. Der Standardwert wird aus dem pageOffset Attribut eines
URL Elements entnommen.
“startIndex“
Gibt an, mit welcher Nummer das erste Ergebnis erhalten soll. Die ist
nützlich, wenn mehrere Suchmaschinen abgefragt werden und die Ergebnisse durchgehen nummeriert und verarbeitet werden sollen. Der Standardwert wird aus dem indexOffset Attribut eines URL Elements entnommen.
“language“
Gibt an, welche Sprache berücksichtigt werden soll. Die von der Suchmaschine unterstützt Sprachen können dem language Tag im OSDD entnommen werden. Einträge, sowohl in der OSDD und somit auch in der URL,
müssen dem Standard für XML Sprachen nach RFC 5646 entsprechen.
Der Standardwert ist * und für alle Sprachen gültig.
“inputEncoding“
Wie bei der Sprache kann die Kodierungen, mit der die Suchmaschine die
Eingabe verarbeiten soll, aus dem InputEncoding Tag im OSDD entnommen werden. Standardmäßig wird UTF-8 verwendet.
“outputEncoding“
Identisch zum input wird die Kodierung der Ausgabe festgelegt.
Des weiteren enthält das URL Element drei weiter optionale Attribute.
Das rel Attribut gibt eine weitere Art der Suche dieses Templates an. Dabei
gibt es 4 von OpenSearch spezifizierte Werte. Weitere, von der Suchmaschine
interpretierte Rollen werden in Kapitel 3.6 aufgeführt.
“results“
Eine normale Suche soll ausgeführt werden. Dies ist der Standardwert.
“startPage“
Es werden Vorschläge zur Vervollständigung des Wortes abgefragt.
“self“
Soll einen Link zum OSDD selbst zurück geben. Um den das URL Element
mit dieser Information zu lesen, muss dieses jedoch bereits bekannt sein.
Eine Formatierung in ein anderes Format ist ebenfalls nicht sinnvoll.
11
“collection“
Der Funktion des zweiten Wertes lautet: “Represents a request for a set of
resources.“ [1] Jedoch wird dies nicht weiter ausgeführt. Es konnte weder
eine Bedeutung erschlossen werden, noch wurde eine Webseite gefunden,
die diese Möglichkeit anbot.
Das ı̈ndexOffsetÄttribut enthält die Nummer, mit der das erste Element der
Suche nummeriert wird. Der Standardwert hierfür ist die ”1”. Das ”pageOffsetÄttribut enthält parallel dazu die Nummer für die erste Seite der Suche. Dies
ist sinnvoll, wenn ein Client mehrere Suchmaschinen zu einer Metasuchmaschine verbindet und die Ergebnisse durchgehen nummerieren will. Dieser kann die
Werte ebenfalls als Parameter in der Suche angeben. Eine vom Standardwert
abweichender Wert kann jedoch bei Clients für Probleme bei der Verarbeitung
sorgen. Beispielsweise wenn die Ergebnisse anhand dieser Nummer in ein Array
gespeichert werden.
3.4
Query Element
Die Query Element dienen zum einen als Beispiel für gültige Werte der Parameter sowie zum testen der Suchmaschine. Außerdem ist es meistens nochmals
mit den eingetragenen Werten in der Antwort enthalten, um die ausgeführte
Suche zu rekonstruieren. Es müssen keine Query Elemente angegeben werden,
jedoch wird erwartet, dass mindestens ein einfaches Beispiel vorgegeben wird.
Ruft ein Client mit diesen Parametern eine Suche auf, muss er zur Bestätigung,
dass die Suchmaschine funktioniert, eine Antwort mit mindestens einem Ergebnis Element erhalten.
Listing 4: Beispiel Query Element
1
<Query role="example" searchTerms="cat" />
In diesem Beispiel muss in dem URL Template nur der Parameter “searchTerms“
durch “cat“ ersetzt werden, um eine erfolgreiche Suche auszuführen. Die Rolle
“example“ wird hierbei verwendet, um die Anfrage als Beispiel zu erkennen.
Weitere Rollen werden in Kapitel 3.3 und 3.6 gelistet. Die weiteren Parameter
werden dabei als Attribute innerhalb des Elements aufgelistet. Für jede sinnvolle Kombination der in den Templates verwendeten Parameter soll ein Query
Element angegeben werden. Enthalten alle Templates die gleichen Parameter
ist somit nur eines von Nöten.
Listing 5: Beispiel Query Element
1
<Query searchTerms="Sonne" startRecord="1" count=""
sru:sortKeys=",pam,2" />
http://www.nature.com/opensearch/request?interface=opensearch&operation=
searchRetrieve&query=Sonne&startRecord=1&sortKeys=%2Cpam%2C0
12
Hier wurden die Werte der Parameter in die URL eingesetzt. Dabei ist zu
beachten, das innerhalb einer URL manche Zeichen kodiert werden müssen.
Für die Kommas in “sortKeys“ wird jeweils “
3.5
Anforderung an die Suchmaschine
Um eine Suche mit OpenSearch bereit zu stellen, muss die Suchmaschine Anfragen über URL unterstützen. Dies kann jedoch jeder übliche Webserver. Des
weiteren muss sie alle Parameter entgegen nehmen, welche im OSDD vorgegeben werden. Gleichfalls sollte das OSDD auch jede Option und Möglichkeit
der Suchmaschine beschreiben. Zwei Suchmaschinen, die identische Parameter
entgegennehmen können, sind somit gegenseitig austauschbar, auch wenn identische Suchen unterschiedliche Ergebnisse liefern. Als letzte Anforderung muss
es ihr möglich sein, die Antwort im gewünschte Format zu liefern. Wenn sie dies
nicht direkt unterstützt, gibt es die Möglichkeit mit sogenannten Wrappern die
Ergebnisse entsprechend zu ändern.
3.6
Response
Die Antwort auf eine Suchanfrage kann im RSS, Atom oder auch HTML Format erfolgen. Welches Format verwendet wird ist in der Beschreibungsdatei
definiert (siehe 3.2). Zur automatischen Auswertung der Suchergebnisse sind
nur RSS und Atom sinnvoll, da beim Rückgabetyp HTML kein Schema vorgegeben ist welches befolgt werden muss. HTML ist nur zur direkten Darstellung
im Browser gedacht (siehe dazu auch 3.7.2).
Listing 6: RSS Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<rss xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
<channel>
<title>Ergebnis Ihrer Suche</title>
<link>http://ergebnis.de</link>
<description>Ergebnisliste</description>
<pubDate>Thu, 02 Apr 2015 06:57:32 GMT</pubDate>
<opensearch:itemsPerPage>10</opensearch:itemsPerPage>
<opensearch:totalResults>150</opensearch:totalResults>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:Query role="request" searchTerms="suchbegriff"/>
<opensearch:link rel="search"
type="application/opensearchdescription+xml"
href="http://ergebnis.de/opensearch.xml"/>
<item>
<title>Erstes Suchergebnis</title>
<link>http://ergebnis.de/link/23256343</link>
<description>Beschreibung zum Suchergebnis</description>
<pubDate>Thu, 02 Apr 2015 06:57:26 GMT</pubDate>
</item>
[...]
</channel>
</rss>
13
In Listing 6 ist ein Beispiel für die Suchanfrage “suchbegriff” an “http://ergebnis.com”
zu sehen. Durch die Elemente “opensearch:itemsPerPage” und “opensearch:totalResults”
ist zu erkennen, dass nicht alle Suchergebnisse zurückgegeben wurden sondern
insgesamt 10. Sollen die Nächsten 10 Suchergebnisse abgerufen werden wird dazu die Template-URL um den Parameter startPage ergänzt (genaueres in 3.3).
Jedes Suchergebnis (item) wird mindestens mit einem Titel einem Link und
einer Beschreibung definiert. “opensearch:Query role” beschreibt die Art der
Suchergebnisse. Möglich sind hierbei
request
Normale Suchanfrage
example
Beispiel Suchanfrage welche zum Testen der Suchmaschine verwendet werden kann und definitiv Ergebnisse zurückliefert.
related
Liefert ähnliche Suchergebnisse aber nicht die selben.
correction
Liefert korrigierte Ergebnisse (z. B. Rechtschreibkorrektur)
subset
Liefert untergeordnete Ergebnisse (bei Betriebssystem z. B. Linux)
superset
Liefert übergeordnete Ergebnisse (bei VW Polo z. B. Auto)
[1]
3.7
Clientseitige Verwendung von OpenSearch
In diesem Kapitel wird ein kleines Java Beispiel implementiert, das die OpenSearch Schnittstelle auf der Client Seite nutzt. Außerdem wird aufgezeigt wie
Suchmaschinenbetreiber OpenSearch verwenden können um Nutzern das Integrieren in Ihren Browser zu erleichtern.
3.7.1
Java Beispiel
Im folgenden soll in Java eine Beispielanwendung implementiert werden, die
prinzipiell alle Suchmaschinen unterstützt welche die OpenSearch Schnittstelle
bereitstellen. So soll es möglich sein die URL der Suchmaschine und Suchbegriffe
einzugeben. Als Ergebnis soll der Anwender eine Liste der Suchergebnistitel
erhalten. Zur Implementierung wird Jsoup1 verwendet, welches Schnittstellen
zum Parsen von HTML und XML bereitstellt. Auch für die benötigten HTTP
Anfragen sind bereits einfach zu verwendende Interfaces vorhanden. Als erstes
muss die Startseite (index.html, index.php, ...) der Suchmaschine abgerufen
werden um an die URL der OpenSearch Beschreibungsdatei zu gelangen.
1
Parser Bibliothek für Java (http://jsoup.org)
14
Listing 7: Abrufen der Startseite
1
2
3
4
Document doc = Jsoup.connect("http://searchengine.com").get();
Elements el = doc.getElementsByAttributeValue("type",
"application/opensearchdescription+xml");
Element fe = el.first();
String descurl = fe.attr("abs:href"); // "abs:" = absolute url
“Search clients can use OpenSearch description documents to learn about the
public interface of a search engine. These description documents contain parameterized URL templates that indicate how the search client should make
search requests.” [1]
Da der OpenSearch Standard definiert, dass die Beschreibungsdatei im HTML
Dokument mit dem type “application/opensearchdescription+xml” angegeben
werden muss wird mit doc.getElementsByAttributeValue nach einem Element
gesucht welches von diesem Typ ist (siehe Listing 7). Als nächstes erfolgt das
Abfragen und Parsen der Beschreibungsdatei.
Listing 8: Beispiel OpenSearch Beschreibungsdatei (SAP Community2 )
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>SCN</ShortName>
<Description>Search SCN</Description>
[...]
<Url type="application/rss+xml"
template="http://scn.sap.com/community/feeds/search/rss2?
peopleEnabled=true&amp;q={searchTerms}&amp;Submit=Search"/>
[...]
</OpenSearchDescription>
Für die Suche im XML Format muss die Url vom type “application/rss+xml”
vorhanden sein (siehe Listing 8). Diese wird mit getElementsByAttributeValue(“type”, “application/rss+xml”).attr(“template”); herausgefiltert und in einer Variable abgespeichert. Sofern diese Abfragen erfolgreich waren und die Implementierung der Suchmaschine XML Suchergebnisse zurückliefert kann jetzt
die eigentliche Suche erfolgen.
Listing 9: Suche ausführen
1
2
String searchUrl = searchUrl.replace("{searchTerms}", pattern);
Document doc =
Jsoup.connect(searchUrl).parser(Parser.xmlParser()).get();
3
4
5
6
7
ArrayList<String> ergTitel = new ArrayList<>();
doc.getElementsByTag("title").stream().forEach((e) -> {
ergTitel.add(e.text());
});
Zu Beginn werden in die Template-URL (siehe Listing 8) die gewünschten Suchbegriffe eingesetzt (siehe Listing 9). Um alle Suchergebnistitel zu erhalten kann
2
http://scn.sap.com/opensearch.xml (abgerufen am 06. Juni 2015)
15
nach Tags mit dem Namen “title” gesucht werden. Dies ist möglich da der
zurückgegebene XML Quelltext auf einem fest vorgeschriebenem Schema basiert, welches von OpenSearch definiert wird. Jetzt muss der Text nur noch auf
dem Bildschirm ausgegeben werden.
3.7.2
Browserintegration
Abbildung 2: Amazon OpenSearch3 AutoDiscovery
OpenSearch bietet nicht nur die Möglichkeit eine Suche standardisiert durchzuführen, sondern dient auch dazu eine Suchmaschine dem Browser hinzuzufügen, so dass der Benutzer Suchbegriffe direkt im Browser eintippen kann
ohne vorher die Website der Suchmaschine besuchen zu müssen. Wie schon in
Kapitel 3.7.1 angesprochen macht es die Beschreibungsdatei möglich universell zu erkennen ob eine Suchmaschine OpenSearch unterstützt oder nicht. Der
Browser liest beim Besuchen der Webseite den Quellcode ein und sucht nach
der Beschreibungsdatei. Ist diese vorhanden und korrekt implementiert wird
dem Benutzer im Suchfeld vorgeschlagen die Suchmaschine hinzuzufügen (siehe
Abbildung 2). Außerdem bietet OpenSearch eine standardisierte Möglichkeit
Abbildung 3: Amazon OpenSearch Suchvorschläge
3
http://d2lo25i6d3q8zm.cloudfront.net/browser-plugins/
AmazonSearchSuggestionsOSD.Firefox.xml (abgerufen am 07. Juni 2015)
16
Suchvorschläge während dem Tippen abzurufen (siehe Abbildung 3). Während
der Benutzer einen Suchbegriff eintippt schickt der Browser eine Anfrage an die
in der Beschreibungsdatei hinterlegte Suggestions-URL4 . Die Antwort erfolgt im
JSON Format, welches sehr simpel gehalten ist (siehe Listing 10). Zuerst werden die verschiedenen Vorschläge aufgelistet und im weiteren die zugehörigen
Kategorien, welche im Beispiel aber nicht angezeigt werden.
Listing 10: Suggestions Antwort (JSON)
1
2
["java",["java", "javascript", "java programming", "java 8", "java gel
stain", "javascript the good parts", "java moss", "java for
dummies", "java ee", "javafx"],
[{"nodes":[{"name":"Books", "alias":"stripbooks"}, {"name":"Trade-In",
"alias":"tradein-aps"}, {"name":"Kindle Store",
"alias":"digital-text"}]}, {}, {}, {}, {}, {}, {}, {}, {}, {}], []]
Diese werden vom Browser ausgelesen und während der Benutzer seine Suchbegriffe eintippt ausgegeben. Sobald der Anwender die Suchanfrage abschickt
sucht der Browser in der OpenSearch Beschreibungsdatei nach einem URLTemplate vom Typ “text/html” in welche die Suchbegriffe eingesetzt werden.
Anschließend wird die URL aufgerufen und dem Benutzer angezeigt.
4
Evaluation
4.1
Serverseitige Bereitstellung
Die Bereitstellung von OpenSearch in der Suchmaschine erfolgt über das OpenSearch Description Document. Der Link zu dieser wird auf der Webseite im
Kopfbereich der HTML-Dateien in einem Link Element aufgeführt. Das Dokument wird nur von Client verarbeitet. Allerdings muss die Suchmaschine für die
darin beschriebenen Anfragen angepasst sein.
Dafür bietet es Vorteile, die die Anwendung der Webseitensuche komfortabler
macht und die Ergebnisse standardisiert zurück liefert. Die Einbindung in eine
bestehende Webseite ist somit einfach. Je mehr Möglichkeiten von OpenSearch
genutzt werden wollen, umso größer wird der Aufwand um die Suchmaschine
anzupassen.
4.2
Clientseitige Verwendung
Die Verwendung von OpenSearch über die URL ist für den Anwender einfach
zu handhaben. Mit einfachsten Kenntnissen können Suchmaschinen kontaktiert
werden. Das standardisierte System von OpenSearch mit den GET-Paramertern
kann einfach erlernt und angewendet werden. Durch die Variable handhabung
der GET-Parameter in der URL bietet die Spezifikation viele Optionen um die
Suchergebnisse zu beeinflussen.
Die Rückgabe mittels XML oder Atom bietet eine gute Lösung um die Suchergebnisse zu erhalten und verarbeiten. Die XML-Dateien können mittels der
4
Url Typ “application/x-suggestions+json”
17
vorgegeben Schema-Dateien validiert werden, so dass sicher gestellt wird, dass
die Ergebnisse valide sind. Die Formate bieten eine perfekte Lösung um die
Suchergebnisse in bspw. einer META-Suchmaschine zu verwenden oder sie in
einer Software zu verwenden, ähnlich wie in der vorgestellte Beispielimplementierung.
Die meist verbreiteste HTML-Rückgabe hingegen ist für eine weitere Verwendung eher unbrauchbar. Die Suchergebnisse müssen hier aufwändig geparst werden. Bei einer Änderung der HTML-Rückgabe muss der Parser neu entwickelt
oder angepasst werden.
Die Spezifikation, im speziellen der Suchterm, weist in einigen Fällen noch
Lücken auf. Sie beschreibt keine Möglichkeit um mehrere Suchbegriffe mittels
logischen Operatoren zu verbinden oder nach Synonymen zu suchen. Dies kann
teilweise durch Erweiterungen der Community aufgefangen werden. Im Allgemeinen stellt die Erweiterungsfähigkeit der Spezifikation durch Software von
Dritten eine gute Basis für eine umfangreiche und sinnvolle Verwendung dar.
Allerdings müssen die Erweiterungen serverseitig eingebunden und unterstützt
werden.
4.3
Verbreitung OpenSearch
Zunächst muss erwähnt werden, dass es schwer ist die Verbreitung von OpenSearch genau zu beziffern. Die Verbreitung von OpenSearch muss in zwei Teile
unterteilt werden.
Die scheinbare Hauptfunktion von OpenSearch ist es eine standardisierte Suchmaschinenanbindung zu schaffen, um unterschiedlichste Suchmaschinen mit einem einheitlichen System zu befragen. Im Laufe der Arbeit konnte festegestellt
werden, dass diese Funktion kaum noch von Webseiten unterstützt werden.
Die Möglichkeit die Ergebnisse mit einem standardisierten XML- oder AtomFormat zu als Rückgabe einer Anfrage zu bekommen wird nur marginal unterstützt. Allerdings wird das HTML-Format als Rückgabe noch in wenigen
Seiten unterstützt. Die Marktführer der Suchmaschinenanbieter haben eigene Schnittstellen entwickelt, mit denen die Suchanfragen an die Suchmaschine
gestellt werden kann und bieten im Normallfall keine weiteren Möglichkeiten
an. Dies hat zur Folge, dass eine Verwendung für bspw. Meta-Suchmaschinen
umständlich ist, da die einzige verbreitete Rückgabe das HTML-Format besitzt.
Soll aus diesen HTML-Dateien die Ergebnisse gewonnen werden und diese weiter Verwendet werden, müssten diese Dateien aufwändig aufgearbeitet werden.
Dies stellt ein größeres Problem dar, da die HTML-Rückgabe vom Aufbau keine
standardisierte Form hat und der Suchmaschinenbetreiber diese in unterschiedlichen Intervallen ändern könnte. Somit müsste man die Rückgabe regelmäßig
bei Änderungen neu aufarbeiten.
Die Browserintegration von OpenSearch ist eine weitere Funktion die zur Verfügung
gestellt wird. Die Verbreitung dieser Funktion ist in fast allen Suchmaschinen
zu finden und kann problemlos eingebunden werden. Auch die Marktführer, wie
bspw. Amazon bieten eine solche Möglichkeit an.
18
5
5.1
Zusammenfassung und Ausblick
Sinnhaftigkeit von OpenSearch
Das Hauptaugenmerk von OpenSearch eine standardisierte Möglichkeit von
Suchanfragen und -ergebnissen zu erhalten ist heute kaum noch zu finden. Es
macht daher auch wenig Sinn diese Funktion in neuen Projekten noch zu verwenden. Leider wird es nur von speziellen kleineren Seiten verwendet. Für eine
Meta-Suchmaschine sollte man die API’s der Suchmaschinen selbst verwende.
In diesem Fall müssen keine HTML-Seiten geparst werden und diese werden
von den Anbietern auch direkt unterstützt.
Dagegen macht die Browserintegration auch heute noch Sinn. Die Funktion
wird von beinah allen größeren Seiten angeboten und bringt viele Vorteile, welche von allen größeren Browserherstellern stetig verbessert werden. Mittlerweile
bieten die Browser diese Funktion schon sehr prominent neben der URL-Zeile
oder in anderen Formen an, sodass die Funktion einen enormen Vorteil für den
Anwender bietet.
5.2
Ausblick
OpenSearch wird heute schon von wenigen Seiten im Ganzen unterstützt. Die
Entwicklung von OpenSearch durch Amazon und A9.com wurde mittlerweile
komplett eingestellt und selbst die Webseite ist an vielen Stellen fehlerhaft.
Die Browserintegration wird dagegen weiter in Browser integriert und verbessert. Es scheint so, als verliert OpenSearch immer mehr den eigentlichen Sinn
und entwickelt sich in eine Richtung, in der nur noch die Browserintegration
zur Anwendung kommt.
Es ist nicht ratsam OpenSearch in vollem Umfang in neue Projekte zu integrieren. Allerdings macht es Sinn bei einer Suche die Browserintegration anzubieten,
da diese noch regelmäßig Anwendung findet.
19
Abbildungsverzeichnis
1
2
3
Suchmaschinen Marktanteile . . . . . . . . . . . . . . . . . . . . 4
Amazon OpenSearch5 AutoDiscovery . . . . . . . . . . . . . . . . 16
Amazon OpenSearch Suchvorschläge . . . . . . . . . . . . . . . . 16
Literatur
[1] DeWitt Clinton. Opensearch specification draft 5.
[2] Dirk Lewandowski. Suchmaschinen verstehen. Vieweg+Teubner Verlag.
[3] SEO-Summary.de. Suchmaschinen marktanteile in europa 2015. Website. Online erhältlich unter http://www.seo-summary.de/wp-content/
uploads/suchmaschinen-marktanteile-europa-2015.png; abgerufen am
30. Juni 2015.
20