Die Google-Search-API

35
Seminar Custom-Search-API Fabian Kurz 51756, Florian Michel 53562, Sven Trittler 53500, Moritz Dickenherr 53597 Betreuer: Prof. Dr. Bantel 15. Juni 2016

Transcript of Die Google-Search-API

SeminarCustom-Search-API

Fabian Kurz 51756, Florian Michel 53562, Sven Trittler 53500, Moritz Dickenherr 53597Betreuer: Prof. Dr. Bantel

15. Juni 2016

Inhaltsverzeichnis

1 Einleitung 3

2 Suchmaschinen 32.1 Entwicklungsgeschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Information Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Crawler und Feeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.4 Indexierung und Normalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.5 Ranking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.6 Query Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Custom-Search-Engine 103.1 Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2 Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3 Ergebnis-Einflussnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3.1 Selektive Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.2 Promotions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.3 Synonyme und Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.4 Labels und Weighted Labels . . . . . . . . . . . . . . . . . . . . . . . . . 133.3.5 Refinement Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.6 Notige Indexierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4 JSON/ATOM Custom Search API 154.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2 Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 Verfeinerung der Suche durch HTTP Request . . . . . . . . . . . . . . . . . . . 164.4 Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.5 Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5 Programmierprojekt Synonymsuche 195.1 HTML und CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.2 Synonym-Einbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.3 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6 Diskussion und Ausblick 22

7 Quellen 23

A synToXml.c 25

B script.js 26

1

C cseapi.html 30

D style.css 32

E Google Search Box 34

Abbildungsverzeichnis

1 Grundschema fur ein invertiertes Dateisystem [GPB01] . . . . . . . . . . . . . . 62 Knoten und gerichtete Kanten zur Reprasentation von Verlinkungen [INV01] . . 83 Kontextinformationen einer Suchanfrage [ZSS01] . . . . . . . . . . . . . . . . . . 94 HTTP GET Request Beispiel [PBD01] . . . . . . . . . . . . . . . . . . . . . . . 165 Ausschnitt aus der fur das Projekt erzeugten Suche . . . . . . . . . . . . . . . . 19

Tabellenverzeichnis

1 Elemente der fur die Suche generierten Webseite . . . . . . . . . . . . . . . . . . 20

2

1 Einleitung

Das Internet ist seit einigen Jahren fester Bestandteil des taglichen Lebens. Die Menge derverfugbaren Internetseiten und Dokumente im World Wide Web steigt immer weiter an. Dochbereits fruh in der Geschichte des Internets kam die Frage auf, wie man diese großen Datenmen-gen durchsuchen konnte. Das Ergebnis sind Suchmaschinen, die durch komplexe Ablaufe einengroßen Teil des Internets durchsuchbar gemacht haben. Der momentane Marktfuhrer Googleerlaubt es Webmastern die Google Suche uber die Custom Search API auf eigenen Webseiteneinzubinden und eine Vielzahl an Einstellungen vorzunehmen.Diese Arbeit beschaftigt sich mit der Frage wie die Custom-Search-API verwendet werden kann.Dazu wird ein Uberblick uber die Prozesse innerhalb einer Suchmaschine von der Informations-beschaffung bis zur eigentlichen Suchanfrage gegeben, um zu verstehen wie das Ranking unddie Filterung uber die API angepasst werden konnen. Schwerpunkte der Arbeit ist die Verarbei-tung der Suchergebnisse und die Manipulation der Suche, bspw. durch eine vom Webmastervorgegebene Datei mit Synonymen.

2 Suchmaschinen

2.1 Entwicklungsgeschichte

Die Anfange der Internetsuchmaschinen finden sich in den spaten 1980er Jahren, als Univer-sitaten begannen Wege zur Durchsuchung des Internets zu erforschen. Archie, die 1990 zumSuche von PDF Dateien auf FTP Servern verwendet wurde, war die erste Internetsuchmaschine.Um jedoch auch verschiedene Webseiten durchsuchen zu konnen wurde zwei Jahre spater dasVLib gestartet. In diese Datenbank wurden Webserver, ahnlich dem System einer Bibliothek,von Hand eingetragen. Der erste Bot zur Untersuchung der Große des Internets war der WorldWide Web Wanderer, der 1993 durch seine haufigen Aufrufe der Seiten einen verglichen mit dendamaligen Datenmengen hohen Traffic verursachte. Ein ahnlicher Ansatz wurde im PrimitiveWeb Search gewahlt, welche nur Titel und die URL der Webseite indexierte und wie alleSuchmaschinen vor ihm nur bei genauen Ubereinstimmungen Ergebnisse lieferte.Websuchen wie Aliweb (1993), infoseek (1994) und Yahoo! Search (1994) verfolgten den Ansatz,ihre Datensatze durch Mitarbeiter und die Einsendungen von Webmastern aufzubauen. DieWebCrawler Search begann kurz darauf den Text ganzer Webseiten zu indexieren (Siehe Kap.2.3) und setzte somit den Grundstein fur die weiteren Entwicklungen.1996 betraten Larry Page und Sergey Brin den Markt mit ihrer Suchmaschine BackRub, die alsErste den PageRank Algorithmus, der in Kap. 2.5 beschrieben wird, zur Sortierung der Ergebnis-se einsetzte. Nach der Veroffentlichung der Ask und MSN Suchmaschine begann 1998/1999 derSiegeszug von Google, da diese durch ihr Ranking und ihre gute Internet Abdeckung die bestenErgebnisse liefern konnten. Projekte wie das Open Directory Project (1998), alltheweb (1999)und overture (1999) wurden von anderen Firmen aufgekauft und verschwanden vom Markt.

3

Google wusste seinen Vorteil zu nutzen und begann mit AdWords (2000) Werbeergebnisse indie Suche einzubauen und mit AdSense (2003) Werbeflachen auf Webseiten anzubieten.Bis 2010 haben nur noch wenige Firmen versucht Fuß im Suchmaschinenmarkt zu fassen, dadieser fast vollstandig von Google dominiert wird. Selbst Microsoft’s Bing und Yahoo! Searchkonnen bis heute nur teilweise mithalten.Es zeigt sich also, dass ein uberlegenes System zur Indexierung des Internets, sowie ein aus-geklugeltes Ranking- und Suchergebnissystem benotigt wird, um den Nutzer mit moglichstwenigen Schritten zu den gewunschten Informationen zu fuhren.

2.2 Information Retrieval

Das Information Retrieval-oder Content Acquisition-System ist ein Grundbaustein jeder Such-maschine, die auf Basis von Crawlern (Siehe Kap. 2.3) basiert. Im Zusammenhang mit Suchma-schinen sind Dokumente nicht Textdateien, sondern Informationsobjekte, wie bspw. Webseiten(HTML), Videos (MP4) oder andere Dateitypen. Die unterschiedliche Herangehensweise andas Problem der Beschaffung von Informationen wird bei der Betrachtung von Yahoo undGoogle sehr schnell klar. Yahoo besaß einen Webkatalog, der durch Mitarbeiter und durch aktiveAnmeldung der Webseitenbetreiber gepflegt wurde, bis er Ende 2014 geschlossen wurde. DasWebkatalog-System kann nicht automatisiert werden und hat damit große Probleme die extremeVielfalt und Vielzahl der Angebote im Netz in der Suche zu reprasentieren.Einer moglichst einfachen Automatisierung durch Crawler zur Indexierung von Webinhaltensteht die extreme Komplexitat des World Wide Web entgegen. Firmen wie Google verbessern ihreAlgorithmen dauerhaft, um die großer werdenden Datenmengen moglichst effizient zu indexieren.Gleichzeitig besteht das Internet aus einer großen Menge an verschiedenen Dokumenttypen, dieweit uber einfache HTML Seiten hinausgehen. Bilder und Videos stellen bis heute ein großesProblem dar, da diese bisher kaum mit Computern auf ihre Inhalte gepruft werden konnen undsomit deren Kategorisierung zu den Suchworten nur durch Metadaten durchgefuhrt werdenkann.

2.3 Crawler und Feeds

Die zwei wichtigsten und meist verwendeten Werkzeuge zur Indexierung von Inhalten fur denWeb-Index einer Suchmaschine sind Feeds und Crawler.Die Aufgabe des Crawlers, auch Spider genannt, ist es, moglichst viele Dokumente im WorldWide Web zu finden, ohne dabei eine Handlung auf der Seite des Webadmins vorauszusetzen.Allgemein konnen vier verschiedene Teile eines Crawlers unterschieden werden:

1. Der Gatherer: Durchsucht das Netz nach Dokumenten.

2. Der Loader: Gibt die Auftrage an.

3. Die URL-Datenbank: Beinhaltet Links zu indexierten und neuen Webdokumenten.

4

4. Der Checker: Wendet verschiedene Filter auf die gefundenen Dokumente an.

Der Gatherer durchsucht das Netz nach Dokumenten, wobei er seine genauen Aufgaben vomLoader erhalt. Dessen Informationen basieren auf der URL Datenbank, welche die Links zu neuen,aber auch zu bereits indexierten Webdokumenten enthalt. Zu allerletzt werden verschiedeneFilter vom Checker angewendet, die sich je nach Crawler deutlich unterscheiden konnen.Die allgemeine Vorgehensweise beim Durchsuchen des Webs basiert auf der starken Vernetzungder verschiedenen Internetseiten durch Hyperlinks, die auch beim Ranking in der Suche einegroße Rolle spielen.Betrachtet man die Webseiten als Knoten und die Hyperlinks als Verbindungskanten einesGraphen, so beginnt der Gatherer seine Aufgabe bei einer kleinen vorgegebenen Menge anKnoten und verfolgt von dort aus alle ausgehenden Kanten (Vgl. Abb. 2). Dieses Modell wirdim Kap. 2.5 zum Thema Ranking nochmals aufgegriffen.Die vom Gatherer gesammelten Daten werden vor der Speicherung vom Checker gefiltert, so dassbeispielsweise nur bestimmte Dokumenttypen gespeichert werden, die außerdem nicht bereitsunter einer anderen Domain oder auf der Blacklist gefunden wurden. Neben der Erweiterung desWeb-Indexes um weitere Dokumente hat der Gatherer die Aufgabe bereits bekannte Webinhalteje nach Dringlichkeit in einer angemessenen Frequenz erneut zu durchsuchen und im Web-Indexzu aktualisieren, da diese seit dem letzten Aufruf verandert oder entfernt worden sein konnten.Die Aktualisierung geschieht dabei uber eine konditionale Abfrage durch den Loader, in demder Zeitpunkt der letzten Anderung vom Server uber den Header der jeweiligen Seite abgerufenwird. Dadurch wird der Ressourcenverbrauch auf Seiten des Suchmaschinenbetreibers und derHoster geschmalert, da nicht erneut die komplette Seite indexiert werden muss.Eine weitere Moglichkeit zur Datenbeschaffung sind Feeds. Diese sind eine strukturierte Art derDatensammlung, bei welcher Seitenbetreiber und vor allem Handler Informationen direkt an dieSuchmaschine ubertragen konnen. Dafur werden XML oder TXT Dokumente verwendet, diedann bestimmte Eigenschaften des Produkts, bspw. einen Titel, Preis oder die Verfugbarkeitenthalt. Diese Methode der Informationsbeschaffung ist vor allem fur Handler wichtig, da aufdiese Weise ihre Angebote ohne Umwege durch Crawler in der Suchmaschine gefunden werdenkonnen.

2.4 Indexierung und Normalisierung

Bevor die gesammelten unstrukturierten Daten indexiert werden konnen, mussen sie normalisiertund somit strukturiert werden. Dafur durchlaufen die gesammelten Dokumente verschiedeneStufen, bis sie schlussendlich fur die Suche verwendbar abgespeichert werden konnen.Um Zeichenfolgen effektiv bearbeiten zu konnen mussen bei HTML-Dokumenten alle Codespra-chen wie JavaScript und HTML-Tags entfernt werden. In diesem Zug werden die vereinfachtenTexte mit einer ID versehen und fur die weitere Verarbeitung freigegeben.Um den Inhalt der Dateien feststellen zu konnen mussen bestimmte Filter die vorkommendenWorte erkennen, indem sie Buchstaben in Prozesssymbole, Trennsymbole und Wortbildungssym-

5

Abbildung 1: Grundschema fur ein invertiertes Dateisystem [GPB01]

bole aufteilen und dann mit einem Worterbuch vergleichen. Außerdem mussen Abkurzungenund Zahlen, z.B. eine Jahreszahl erkannt werden, da diese fur die Suche relevant sein konnten.Diese Ergebnisse werden spater auf Schlusselworter, auch Deskriptoren genannt, untersucht.Suchmaschinen wie Google trennen ihren Index auch in verschiedene Sprachen auf, damit geziel-tere Suchen moglich sind. Dafur wird eine Spracherkennung benotigt, die dann die Reihenfolgevon typischen Zeichenfolgen im Dokument und den Sprachen vergleicht. Es werden wie bei derWorterkennung auch Worterbucher zur Erkennung der Sprache verwendet. Die im Header desjeweiligen Dokuments angegebene Sprache wird jedoch meist komplett ignoriert.Beim Word Stemming werden Worter auf ihren Grundstamm zusammengefasst. Dieser Vorgangwird von den meisten Suchmaschinen jedoch nicht eingesetzt. Somit wird zum Beispiel einSuchwort im Singular und Plural die gleichen Ergebnisse liefern. Diese Algorithmen sind immersprachspezifisch und werden mit zunehmender grammatikalischer Schwierigkeit der Spracheschwerer umzusetzen.Um die Dokumente moglichst genau beschreiben zu konnen, muss der Inhalt nach Schlusselworternbzw. Keywords durchsucht werden. Nach mehreren statistischen Versuchen stellte sich bereitsfruh heraus, dass mittelmaßig haufige Substantive die besten Deskriptoren darstellen.Werden auf Webseiten Bilder oder Videos eingebunden, so werden diese uber den Umgebungstext

6

um das Medium und deren Meta-Informationen ausgewertet. Diese Meta-Daten bestehen ausautomatisch erstellten Statistiken wie Kameradaten und vom Ersteller selbst angegeben Tagswie dem Titel.Die meist verwendete Speicher- und Zugriffsmethode fur die verarbeiteten und gefilterten In-formationen ist das invertierte Dateisystem. Der Index besteht aus allen bisher gefundenenKeywords und wird bei Bedarf erweitert. Jedes Schlusselwort zeigt auf eine invertierte Datei.Diese invertierten Dateien werden verwendet, damit nicht alle Dokumente auf die Schlusselworteuntersucht werden mussen. Stattdessen werden ein Link aller Dokumente, die das jeweiligeKeyword enthalten in die invertierte Datei geschrieben,was einen schnelleren Zugriff erlaubt. Eswerden zu jedem Dokument auch Informationen fur das Ranking, wie Gewicht und Frequenz derKeywords eingetragen. Webseiten, Bilder, Videos, Nachrichten und weitere Kategorien werdendabei meist getrennt gespeichert. Mit der DocID ist es moglich Informationen uber die Positionder Schlusselworter im Dokument und die allgemeinen Informationen zur Datei abzufragen. DerZugriff auf die normalisierte Datei, die bspw. von Google komplett gespeichert wird, erfolgtebenfalls uber die DocID.

2.5 Ranking

Ein wichtiger Aspekt jeder Suchmaschine sind die Algorithmen, die zur Berechnung einesRankings verwendet werden. Das Ranking beschreibt eine Sortierung der Suchergebnisse nachbestimmten Bewertungen.Dabei konnen eine Vielzahl von Kriterien, wie etwa Keyworddichte,Suchhistorie oder Domainal-ter zum Einsatz kommen. Die genaue Zusammensetzung der Kriterien wird von den Betreiberndabei meist geheim gehalten.Im Folgenden wird der Algorithmus mit dem Google 1999 gestartet ist erklart und wie dieEntwicklung bis 2016 vorangeschritten ist.Zu Beginn der Google Suchmaschine wurden die Suchergebnisse durch den PageRank Algo-rithmus berechnet. Wie bereits im Kap. 2.3 angedeutet kann hier das gedankliche Bild vonWebseiten als Knoten und Hyperlinks als Kanten angenommen werden.

7

inlink to node 2

outlink from node 1

Node(e.g. www.ncsu.edu)

1 2

3

6 5

4

Abbildung 2: Knoten und gerichtete Kanten zur Reprasentation von Verlinkungen [INV01]

Durch jede Verlinkung auf eine Webseite vergroßert sich der Wert ihres Knoten, bzw. steigtihr PageRank. Je großer der PageRank einer Internetseite ist, desto wichtiger ist Ihre Verlinkungfur eine andere Domain, was wiederum den PageRank der Seite erhoht, auf die verlinkt wurde.In Abb. 2 hatte demnach Knoten 1 einen recht niedrigen PageRank, da er nur uber einen inlinkverfugt. Knoten 4 und 6 hatten den hochsten PageRank, da sie uber je zwei inlinks von Knotenmit wiederum zwei inlinks verfugen. Knoten 5 hat zwar ebenfalls zwei inlinks, allerdings ist derinlink von Knoten 3 kommend weniger gewichtet, da selbiger nur uber einen einzelnen inlinkverfugt.Uber die Jahre hinweg hat Google diese Herangehensweise deutlich uberarbeitet und mit anderenAlgorithmen erganzt. In einem Q&A (2016) auf YouTube [9] wurde nun veroffentlicht, dassGoogles Ranking Algorithmus Hummingbird weiterhin großteils mit einer abgeanderten Versionvon PageRank arbeitet. Gleichzeitig wird jedoch verstarkt auf die Inhalte der Seite geachtet, dain der Vergangenheit sehr vernetzte Internetseiten ohne Ubereinstimmung mit dem Suchwort inden Ergebnissen vorkamen.Laut Google ist RankBrain, eine kunstliche Intelligenz mittlerweile der dritt wichtigste Faktor,da diese die Suchen bis zu einem gewissen Grad interpretieren kann. Somit werden im Gegensatzzu einer Suche ohne RankBrain auch Seiten, deren Schlusselworter nicht direkt ubereinstimmen,aber trotzdem zum Thema passen weiter oben angezeigt. Das Lehren und Lernen der KI erfolgtoffline, indem bereits analysierte Suchanfragen eingegeben werden und bei befriedigendemErgebnis freigeschaltet werden.

8

2.6 Query Processor

Gibt ein Nutzer einen Suchbegriff in die Suchmaschine ein, so wird diese an den Query Pro-cessor weitergeleitet. Dieser durchsucht die Index-Dateien nach passenden Dokumenten, derenSchlusselwort mit dem gesuchten Begriff ubereinstimmt. Wird mehr als ein Suchbegriff einge-geben, so werden diese Keywords im Index gesucht und die Dokumente in der Schnittmengeverwendet. Die meisten Suchmaschinen erlauben es dem Nutzer logische Operatoren in ihreSuche einzubauen, um ihre Anfrage zu prazisieren. Google erlaubt unter anderem:

•”AND“: Standard-Operator zwischen Suchbegriffen

•”OR“: Nur einer der beiden Suchbegriffe muss im Dokument vorkommen

•”-“: Zum Ausschließen eines Begriffs oder eines Wortes

•”..“: Zum Durchsuchen eines Zahlenbereichs

Da Suchanfragen allerdings meist nur aus Suchbegriffen ohne Kontext bestehen muss die Such-maschine versuchen diese zu interpretieren. Dabei werden verschiedene Kontextinformationen,wie bspw. die bisherigen Suchbegriffe des Nutzers oder angeklickten Links aus einer Sucheverwertet (Vgl. linke Seite Abb. 3).

Abbildung 3: Kontextinformationen einer Suchanfrage [ZSS01]

Außerdem kann das Suchverhalten anderer Nutzer mit gleichen Suchbegriffen ausgewertetwerden, um prazisere Ergebnisse liefern zu konnen. Beispielsweise geben die angeklickten Linksund die jeweilige Verweildauer Aufschluss auf die Nutzlichkeit der Seite fur den jeweiligen Nutzer(Vgl. rechte Seite Abb. 3).Diese Art der Interpretation von Suchbegriffen ist vor allem fur Programme wie MicrosoftCortanaTM , Apple SiriTM und Google NowTM wichtig, da diese uber GPS-Daten, Kalenderein-trage und vergangene Suchanfragen verfugen und somit einen starken Einfluss auf die Ergebnisseeiner Suche haben konnen.Der Query Processor berechnet mithilfe der gegebenen Gewichtung und den zusatzlichen Kon-textinformationen in einem speziellen Algorithmus das Ranking der gefundenen Dokumente undgibt die Ergebnisse fur den Nutzer aus.

9

3 Custom-Search-Engine

Die Google Custom Search ermoglicht es dem Benutzer eine Suchmaschine auf einer eigenenWebseite einzurichten. Dabei ist es moglich sowohl eine Text- als auch eine Bildsuche durch-zufuhren, sowie die Suche entsprechend den eigenen Vorstellungen anzupassen. Dazu zahlendas Aussehen der Suche sowie ihrer Ergebnisse, als auch die Manipulation der angezeigtenErgebnisse selbst.Zudem wird zwischen Site Search, also der Durchsuchung der eigenen Webseite und einer Durch-suchung vieler Webseiten zu einem bestimmten Thema unterschieden. Ebenso ist es moglichGeld mit der eigenen Search Engine zu verdienen.

3.1 Einrichtung

Um eine Custom Search Engine (CSE) zu erstellen, gibt es zwei verschiedene Herangehensweisen.Zum einen das von Google bereitgestellte Control Panel, welches auch Personen ermoglicht, eineCSE zu erstellen, die nur sehr wenig, bis gar keine Programmiererfahrung haben. Zum anderenmit Hilfe einer XML Datei, die mehr Moglichkeiten bietet Einfluss auf die Suche zu nehmen.Zunachst mussen die Standard Informationen eingestellt werden. Bei der Festlegung des Namensder Suchmaschine sollte darauf geachtet werden, dass der Name einen Hinweis auf den geplantenVerwendungszweck der Suchmaschine gibt.Zudem wird eine kurze Beschreibung angegeben. Hier konnen Informationen stehen, wie z.B.die geplante Art der Suchanfragen, oder fur welche Nutzer diese Suchmaschine erstellt wurde.Redundante Informationen sind dabei jedoch zu vermeiden. Die Beschreibung sollte dabeidennoch hinreichend genau sein, damit spatere Benutzer wissen, welche genauen Funktionendiese Suchmaschine konkret bietet.Auch die Sprache der CSE muss festgelegt werden. Dies beeinflusst sowohl das Interface derSuchmaschine, wie z.B. Beschriftungen der Schaltflachen, als auch die Suche selbst. Seiten in derangegebenen Sprache werden hervorgehoben und erzielen ein hoheres Ranking. Seiten andererSprachen werden dabei nicht komplett von der Suche ausgeschlossen.Zudem ist es moglich, dass die eingegebene Suchanfrage von lateinischen Buchstaben in andereSchriftzeichen(bspw. Chinesische oder Arabische Schriftzeichen) umgewandelt wird. Werdenmehrere Schriftsprachen zur Auswahl gestellt, kann der Nutzer mithilfe eines Dropdown Menusselbst aussuchen, welche Schriftsprachen er in der Suche verwenden mochte.Sind mithilfe des Control Panels und ggf. der XML Datei alle Einstellungen getroffen kann eineCSE erstellt werden, welche wiederum in die eigene Html Seite eingebettet werden kann.

3.2 Einstellungen

Google stellt viele Einstellungsmoglichkeiten bereit, um die eigene Custom Search Engine je nachBelieben zu gestalten. Es wird zwischen der Custom Search Engine und der Google Site Search(GSS) unterschieden. Die CSE ist dabei kostenfrei, die GSS kostenpflichtig. Letztere ermoglicht

10

es Werbung, sowie das Google Branding zu entfernen und bietet die Option Suchergebnisse ineiner XML Datei zu erhalten, um noch mehr Einfluss auf die Darstellung der Search Engine,sowie deren Ergebnisse nehmen zu konnen.Bei der CSE ist der Umfang der angebotenen Leistungen dagegen deutlich reduziert. So istetwa die Anzahl der zulassigen Suchanfragen pro Tag relativ gering. Wahrend bei der CustomSearch Engine nur 100 Suchanfragen am Tag moglich sind (ca. 35.000 p.a.), ist die Anzahl derSuchanfragen bei der GSS vom gebuchten Packet abhangig. Bspw. kosten 50.000 Suchanfragen250$ pro Jahr, eine Anzahl von 500.000 Anfragen belauft sich auf 2000$.Wie bereits angedeutet ist es durch entsprechende Einstellung auch moglich, mithilfe der SearchEngine Geld zu verdienen. Wenn ein Nutzer auf die Werbung einer Seite klickt, auf die er durchdie Search Engine gelangt ist, verdient der Besitzer der Engine einen kleinen Betrag.Eine der vielen Einstellungsmoglichkeiten der Search Engine, ist das Layout. Standardmaßigwerden unterhalb einer Suchbox die Suchergebnisse angezeigt. Allerdings ist es auch moglichdie Suchbox vollkommen separat von den Suchergebnissen zu platzieren oder die Suchbegriffeaus anderen HTML-Objekten oder mit Hilfe von JavaScript zu fullen. Analog konnen auch dieSuchergebnisse auf einer eigenen Seite anzeigen oder komplett anderen Objekten zugewiesenwerden.Dadurch es auch moglich, Farben, Schriftart oder andere Formatierungsmerkmale der Resultatezu verandern. Weitere optionale Funktionen sind die Autovervollstandigung und sogenannte

”Promotions“. Dabei ist es moglich der Autovervollstandigung, eigene Worter hinzuzufugen oder

Worter zu entfernen, bzw. auszuschließen um ein dem Benutzer angepasstes Suchfeld zu bieten.Bei Promotions hingegen handelt es sich um sind Informationen, die bei einem bestimmten,festgelegten Suchbegriff uber allen Suchergebnissen dargestellt werden. Dies konnen spezielleWebseiten sein, die sonst nicht angezeigt werden wurden, oder als besonders wichtig fur diespezielle Suchanfrage gewertet werden. Eine genauerer Erlauterung folgt in Kap. 3.3.2.Als Alternative zur klassischen Textsuche bietet Google außerdem eine Bildsuche an. Dabeikann zwischen drei vorgegebenen Layouts fur die Anordnung der Bilder ausgewahlt werden.

3.3 Ergebnis-Einflussnahme

Zusatzlich bietet Google auch viele Moglichkeiten an, die Suchergebnisse zu filtern und zubeeinflussen. Dies kann unter Verwendung zwei verschiedenen Programmiersprachen bzw. Da-teiformaten moglich. Wie zuvor bei den grundsatzlichen Einstellungen (Kap 3.2) der CustomSearch Engine, kann die Ergebnis-Einflussnahme durchgefuhrt werden, indem eine entsprechendeXML Datei hochgeladen wird. Allerdings ist es inzwischen auch moglich die Einstellungen mitder Sprache TSV vorzunehmen. Unter beiden Sprachen stehen alle Einstellungen zur Verfugung.Somit steht es jedem frei, selbst zu entscheiden, welche Sprache man zur Einstellung derErgebnis-Einflussnahme verwendet.

11

3.3.1 Selektive Suche

Standardmaßig durchsucht Google und damit auch die CSE alle von Google indexierten Sei-ten. Oft wunscht der Betreiber einer Seite jedoch, dass nur gewisse Seiten durchsucht werdenoder eventuelle Konkurrenzseiten nicht in der Suche erscheinen. Dies wird als selektive Suchebezeichnet. Dabei ist es moglich eine Liste an Seiten anzugeben, die inklusive aller Unterseitendurchsucht werden sollen.

”*.Beispiel.de/*“ wurde beispielsweise dazu fuhren, dass alle Unter-

seiten, von”www.Beispiel.de“, wie z.B.

”info.Beispiel.de/Test.html“ usw. durchsucht werden.

Ebenso kann nur die Hauptseite oder nur eine/mehrere spezielle Unterseite zur Suche hinzugefugtwerden. Analog konnen auch einzelne Seiten und Unterseiten aus der Suche ausgeschlossenwerden. Zusatzlich steht die Option zur Verfugung Seiten zur Suche hinzuzufugen, die von denbereits in der Suche involvierten Seiten, verlinkt werden. Auch hier ist es moglich der Suche alleUnterseiten der verlinkten Seiten, oder nur explizit die verlinkten Seiten zu durchsuchen oderauszuschließen.

3.3.2 Promotions

Um seine Benutzer bei der Suche zu unterstutzen konnen”Promotions“ hinzugefugt werden.

Dies sind speziell ausgewahlte Seiten, die bei bestimmten Suchbegriffen, uber den restlichenSuchergebnissen angezeigt werden. Zusatzlich zu dem Link auch ein Bild, sowie eine kurzeBeschreibung angefugt werden. Sie sind allerdings optional. Aussehen, wie etwa Hintergrundfarbe,der Rahmen und der Text konnen verandert werden.Diese Funktion wird großtenteils jedoch nicht zur reinen Verbesserung der Suche sondern furWerbung genutzt. Firmen bezahlen dabei dafur, dass bei ausgewahlten Suchanfragen eineAnzeige der Firma uber den Suchanfragen eingeblendet wird. Die Anzeigen sind oft so gestaltet,dass es kaum erkennbar ist, dass es sich um Anzeigen und nicht um Suchergebnisse handelt.Auf Grund der Tatsache, dass Nutzer einer Search Engine oft nur wenige der ersten Ergebnisseansteuern verhindern Firmen so oft, dass ihre Seiten unter einem Suchbegriff erst auf denhinteren Seiten auftauchen.

3.3.3 Synonyme und Keywords

Eine weitere Moglichkeit die Suche zu beeinflussen, ist die Einspeisung von Synonymen. DieSuche wird so um alle Begriffe erweitert, die dem Sinn des ursprunglichen Suchbegriffes ent-sprechen. Ubliche Synonyme sind in der Google Suche bereits standardmaßig integriert. EinSynonymbeispiel ware der Suchbegriff

”Essen“. Hier wurde gleichzeitig auch nach Wortern wie

”Mahlzeit“,

”Gericht“ oder

”Speise“ gesucht werden. Sinnvoll ist es, Synonyme hinzuzufugen,

die spezifisch auf die eigene Seite, bzw. das Thema der Suchmaschine, zugeschnitten sind. Somitkann direkt beeinflusst werden welche Suchergebnisse mit angezeigt werden. Als Beispiel warees auf einer Webseite, welche sich mit Fußball beschaftigt, sinnvoll wenn bei einer Suche nachStadten automatisch nach dem Verein dieser Stadt gesucht wird.

12

Es werden auch viele Moglichkeiten angeboten, das Ranking(Reihenfolge), in der die Suchergeb-nisse angezeigt werden, zu beeinflussen. Eine dieser Moglichkeiten sind sogenannte

”Keywords“.

Werden Keywords angegeben, so werden Seiten, die selbige enthalten, hoher gestuft und tauchensomit auch weiter oben in den Suchergebnissen auf. Seiten, die diese Keywords, nicht enthaltenwerden jedoch nicht heruntergestuft oder aus der Suche ausgeschlossen. Auf der beispielhaftenFußballseite konnte als Keyword z.B.

”Fußball“angegeben werden um entsprechende Seiten in

den Resultaten weiter nach oben zu verschieben.

3.3.4 Labels und Weighted Labels

Eine andere Moglichkeit das Ranking der Suchergebnisse zu beeinflussen, sind die”Labels“. Es

wird im Allgemeinen zwischen normalen Labels und”weighted“ Labels unterschieden. Nach der

Erstellung eines Labels, konnen Seiten mit diesem Labels gekennzeichnet werden. Normalerweisesind die Labels nicht fur den Nutzer sichtbar dargestellt, sondern im Hintergrund versteckt.Durch die Labels wird beeinflusst, wie wichtig die zugehorige Seite ist oder ob sie uberhauptangezeigt werden soll.Fur Label stehen drei verschiedene Modi zur Verfugung. Der Modus

”Eliminate“ fuhrt zum

Ausschluss einer mit dem Label gekennzeichneten Seite. Wird der Modus”Filter“gesetzt werden

nur die Seiten angezeigt, die mit diesem Label gekennzeichnet sind. Alle anderen Seite werdenaus der Suche ausgeschlossen.Die letzte Moglichkeit ist der Modus

”Boost“. Alle Labels mit diesem Modus, sind sogenannte

weighted Labels. Sie haben ein zusatzliches Attribut”Gewicht“ welches dazu dient Seiten,

herauf oder herab zu stufen. Sie werden dementsprechend weiter oben oder weiter unten inden Suchergebnissen angezeigt. Der Wertebereich der weighted Labels liegt dabei im Intervall[−1.0, 1.0]. Ein Wert von 1.0 stuft die Seite als besonders wichtig ein, ein Wert von -1.0 alseher unwichtig. Somit ist es moglich auch genaue Feinabstimmungen durchzufuhren, da auchalle Zwischenwerte verwendet werden konnen, wie z.B. 0,301. Wird kein Wert angegeben, wirddieser standardmaßig auf 0,7 gesetzt.Alle Labels konnen zusatzlich mit einem weiteren Attribut

”Top“ versehen werden. Dieses

Attribut fuhrt dazu, dass Seiten mit diesem Label, moglichst in den ersten”x“ Suchergebnissen

vorkommen, wobei”x“ der in TOP abgespeicherte Wert ist. Allerdings gilt dies nur, wenn diese

Seiten auch fur die Suche relevant sind. Ist dies nicht der Fall, kommen diese Seiten auch nichtin den ersten

”x“ Suchergebnissen vor.

Um Labels fur einzelne Seiten weiter zu beeinflussen, gibt es die sogenannten”Scores“. Mit

ihnen ist es moglich die Auswirkung von Labels fur spezifische Seiten zu verandern. Der Werte-bereich liegt erneut im Intervall [−1.0, 1.0]. Der Wert 1.0 steht dafur, dass das Label die volleAuswirkung auf das Ranking dieser Seite hat. Bei einem Wert von -1.0 wird die Auswirkungkomplett umgekehrt. Bei einem Score von 0 wird das Gewicht des Labels vollstandig ignoriert.Somit sind weitere Feinabstimmungen moglich.Durch die Label ergeben sich so Kombinationen von Modi, Gewicht und Score die sicherstellen,

13

dass eine Seite an der gewunschten Stelle der Resultate erscheint. Eine Seite, die mit einemLabel mit dem Modus Filter und einem Gewicht von 1.0 gekennzeichnet wird, kann mithilfeeines Scores von -1.0 komplett aus der Suche ausgeschlossen werden.. Analog wird eine Seite,mit einem Label, mit dem Modus Eliminate, dem Gewicht 1.0 und dem Score -1.0, in die Sucheaufgenommen und als besonders wichtig angesehen.

3.3.5 Refinement Labels

Eine zusatzliche Art von Labels sind die”Refinement Labels“. Diese Labels sind im Gegensatz

zu anderen Labeln fur den Nutzer sichtbar und werden als Link direkt unter der Suchleisteangezeigt. Sie dienen dazu, die Suche eines Nutzers zu verfeinern. Ein Beispiel ist der Suchbegriff

”Grippe“. Da die Suchmaschine nicht selbstandig weiß, ob der Nutzer nach den Symptomen

oder nach Heilungsmethoden sucht. Durch die Refinement Labels konnen dem Benutzer solcheBegriffe zur Auswahl gegeben werden, damit er seine Suche verfeinern kann. Alle Einstellungender normalen Labels (Siehe Kap. 3.3.4) gelten ebenfalls fur Refinement Labels. Weiter ist esmoglich, dass nur die Seiten angezeigt werden, die mit diesem Label versehen worden sind wennder Benutzer auf einen der Refinement Links klickt. Alternativ werden alle Seiten angezeigt,aber die Seiten mit diesem Label als wichtiger eingestuft. Die Suche des Benutzers wird nachAuswahl eines Refinement Labels um entsprechend im Label gespeicherte Suchbegriffe erweitert.

3.3.6 Notige Indexierung

Zuletzt ist zu beachten, dass nicht alle Seiten im Internet von Google gelistet werden, da sienoch nicht vom Google Crawler (Siehe Kap. 2.3) indexiert wurden. Diese konnen nicht in derselbst erstellten Custom Search Engine angezeigt werden, außer sie wurden manuell zur Suchehinzugefugt. Alternativ ist es moglich ein

”On-Demand Indexing“ auszufuhren. Mit diesem Ver-

fahren werden einzelne URLs indexiert, oder eine”Sitemap“ erstellt. Letztere enthalt eine Liste

mit den Unterseiten einer Website, sowie zusatzliche Informationen. Zu den Informationen zahlt,wie oft eine Seite aktualisiert wird, wann sie zuletzt aktualisiert wurde und wie wichtig dieseUnterseiten sind. Allerdings werden Seiten, die durch

”On-Demand Indexing“ aufgenommen

wurden nicht von Google offiziell in den Index aufgenommen, sondern nur fur die eigene SearchEngine zur Verfugung gestellt. Seiten konnen auf dieselbe Art manuell oder nach Ablauf einervorher definierten Zeitspanne automatisch aus dem Index entfernt werden. Dies ist wichtig, fallsz.B. eine Seite nicht mehr existiert, aber trotzdem noch in der Suche auftaucht.

14

4 JSON/ATOM Custom Search API

4.1 Allgemein

Die JSON/Atom API erlaubt das Entwickeln von Webseiten und Anwendungen zum pro-grammatischen Abrufen und Anzeigen von Suchergebnissen aus der Custom Search Engine .Diese Programmierschnittstelle kann zwei Datentypen zuruckgeben, JavaScript Object Notation(JSON) oder ATOM (Format). Die Standardruckgabe ist JSON, um eine ATOM Ruckgabezu erhalten muss lediglich der Parameter

”alt=atom“ an die Request angehangt werden. Da

fur JSON in praktisch allen verbreiteten Programmiersprachen Parser existieren ermoglichtdies, dass mit der Google Custom Search Engine unabhangig von der Programmiersprachekommuniziert werden kann. JSON ist ein Datenformat um strukturierte Daten zu speichernund zu ubertragen. Im Folgenden wird uberwiegend auf die JSON Verarbeitung eingegangen.

4.2 Request

Die Anfrage zu einem Suchausdruck geschieht uber eine Hypertext Transfer Protocol (HTTP)Anfragemethode GET, die grundlegend folgendermaßen aussieht:

GET https://www.googleapis.com/customsearch/v1?parameter1=. . . &parameter2=. . .

Grundsatzlich gibt es zwei verschiedene Arten von Parametern, API spezifische und die Stan-dard Abfrage Parameter. API spezifische Parameter definieren Eigenschaften der Suche wiebeispielsweise den Suchausdruck, Sprache, Anzahl der Ergebnisse und Filter. Standard Parameterbestimmen Einstellungen wie zum Beispiel das Datenformat der Ruckgabe oder der API Key.Bei jeder Suchanfrage werden drei Parameter zwingend erfordert:

• Der API”key=“, welcher die Client Anwendung bei Google identifiziert und separat von

der Suchmaschine in der Google Konsole erstellt werden muss.

• Die Custom Search Engine ID identifiziert und legt fest welche Suchmaschine verwendetwerden soll, diese ID wird mit dem Parameter

”cx=. . . “ angegeben.

• Suchterm”q=. . . “, Zeichenfolge die angibt nach was die Suchmaschine sucht.

Die einfachste Suche nach”Schnupfen“ konnte wie folgt aussehen:

GET https://www.googleapis.com/customsearch/v1?key=APIKEY&cx=ID&q=Schnupfen

15

Abbildung 4: HTTP GET Request Beispiel [PBD01]

4.3 Verfeinerung der Suche durch HTTP Request

Durch die in der HTTP Request verfugbaren Angabeparameter konnen die Ergebnisse derSuchmaschine,

”on-the-fly“, eingestellt werden. Alle im Folgenden aufgefuhrte Parameter konnen

mit einem &parameter=. . . der GET Request angestellt werden.Mit dem Parameter

”dateRestrict=x[y]“ kann angegeben werden, wie alt die Suchresultate

hochstens sein durfen, x steht fur die Zeitdefinition (d=Tag, w=Woche, m=Monat, y=Jahr) undy fur die Dauer mit y > 0. Es konnen Terme angegeben werden, die in allen Ergebnissen enthaltensein mussen (

”exactTerms“). Ebenso kann ein Term ausgeschlossen werden (

”excludeTerms“).

Außerdem kann durch die Angabe von mehreren”orTerms“ bestimmt werden, dass in jedem

Resultat eines Suchergebnisses mindestens einer der angegebenen Terme enthalten sein muss.Auch ist es moglich nach bestimmten Dateitypen zu suchen, wenn beispielsweise zu einemBegriff PDF Dateien gesucht werden kann dies mit

”fileType=pdf “ bewerkstelligt werden. Um

zu vermeiden, dass Duplikate im Suchergebnis auftauchen kann ein”filter“ Parameter bestimmt

werden, 0 schaltet den Filter aus, 1 ein. Ein weiterer Filter ist”safe=. . . “. Er bewirkt, dass die

Sicherheitsstufe eines Suchergebnisses eingestellt werden kann. Es stehen drei Konfigurationenzur Verfugung. Die Standardeinstellung ist

”off“, damit wird dieser Filter komplett deaktiviert,

”medium“ aktiviert die sichere Suche und

”high“ aktiviert die hochste Stufe. Sicherheit aus-

schlaggebende Themen konnen beispielsweise Gewalt und pornographische Inhalte sein.Neben einer Textsuche kann auch eine Bildsuche durchgefuhrt werden. Um sie zu verfeinernstehen eine Reihe von Moglichkeiten zur Verfugung. Damit bei einer Bildersuche mit vielenErgebnissen die Website nicht uberlastet wird ist es sinnvoll die Große der Bilder verandern zukonnen, dies geschieht mit

”imgSize=. . . “. Hier stehen bis zu sieben Großen zur Verfugung wie

16

huge, icon, large, medium, small, xlarge und xxlarge. Es kann durch”imgDominatColor=. . . “

eine Farbe angegeben werden, der die Hauptfarbe der zu suchenden Bilder entsprechen soll.Wenn beispielsweise nach Schwarz-Weiß Bildern gesucht werden soll, gibt es hierfur einen Parame-ter

”imgColorType=mono“. Dieser gibt an, was fur ein spezieller Bild-Farb-Typ zuruck geliefert

wird, es stehen Schwarz-Weiß (mono), Graustufen (gray) und Farbbilder (color) zur Auswahl.Weiter kann noch spezifiziert werden welcher Bildtyp resultieren soll, wenn zu einem bestimmenSuchterm nur Bilder mit Gesichtern angezeigt werden sollen, kann dies mit

”imgType=face“

bewerkstelligt werden. Außerdem stehen noch Kategorien wie news, photo, clipart und linearezur Auswahl.

4.4 Response

Als Antwort(Response) auf die in Kapitel 4.2 beschriebene Request, gibt der Server dem Clientein JSON Objekt zuruck. Bei einer erfolgreichen Anforderung antwortet der Server mit einem200 OK HTTP Status und dem Ergebnis der Suche im JSON Format.Dieses JSON Objekt enthalt drei verschiedene Arten von Eigenschaften, die Metadaten derSuche, die Metadaten der Suchmaschine und das Suchergebnis.

• Suchanfrage MetadatenDiese enthalt unter dem Wert

”url“ die OpenSearch Vorlage, die fur eine Suchanfrage

benutzt wurde und ein Array”queries“, bestehend aus Objekten, die die Charakteristik

einer Suche beschreiben. Zudem enthalt sie das Array”request“, das die Beschreibung

der aktuellen Suchergebnisse, wie unter andere, den Suchterm, Anzahl der insgesamtgefundenen Ergebnisse, Anzahl der tatsachlich gelieferten Suchergebnissen, verwendeteZeichencodierung und die verwendete Suchmaschinen ID enthalt. Die Dauer der Suchzeit,die Anzahl der Suchergebnisse, sowie formatierte Werte der beiden vorherig genanntenAttribute sind unter

”searchInformation“ gespeichert.

• Suchmaschinen MetadatenMetadaten der Suchmaschine sind im Array

”context“ dargestellt. Es enthalt den Namen

der Suchmaschine, die die Suche ausgefuhrt hat und Facette Objekte zur Verfeinerung derSuche.

• SuchergebnisDas Array “items“ stellt das Suchergebnis dar, in diesem Array sind Titel, Link und kurzeBeschreibung gespeichert. Außerdem gibt es diese Werte ebenfalls mit dem Prafix

”html“,

diese enthalten HTML modifizierten Text der beispielsweise in der kurzen Beschreibung dasSuchwort hervorhebt. Wenn es sich um ein Bild handelt sind im Attribut

”image“, dass sich

ebenfalls in”items“ befindet, Informationen wie Hohe, Breite, Große und aquivalent dazu

Informationen fur die Thumbmail Anzeige gespeichert. Wenn die Suchanfrage Werbungenthalt befindet sich diese im Attribut

”promotions“. Werbung muss in einer extra XML

17

Datei definiert werden, jeder einzelnen Werbung wird dort ein”queries=

”. . . ““ Attribut

hinzugefugt, wenn der angefragte Suchterm diesen enthalt oder damit ubereinstimmt wirddiese Werbung in die Ruckgabedatei, unter dem oben beschriebenen Attribut, eingebunden.

4.5 Optimierung

Suchmaschinen haben in der heutigen Zeit mehr Bedeutung denn je, sie sind zum alltaglichenvirtuellen Gebrauchsgegenstand geworden. Dies bedeutet jedoch auch, dass sehr viele Menscheneine Suchmaschine oft und viel benutzen. Daher ist es besonders wichtig die Datenmenge, diebei einer Suchanfrage entsteht, so gering wie moglich zu halten um die Geschwindigkeit derAnfragen zu verbessern.Die Custom Search JSON/ATOM API liefert zu jeder Suchanfrage eine Fulle an Informationenund Details die bei einer normalen Suche eines Benutzers oft nicht benotigt werden. In denStandardeinstellungen liefert die JSON/ATOM API alle verfugbaren Daten. Beispielsweisekonnen bei einer einzelnen Suchanfrage, die exakt einen Suchtreffer liefert, uber 90 Werte,die das Suchergebnis, Details und Zusatzinformationen enthalten, anfallen. Wenn jedoch demBenutzer lediglich 3 Werte, wie Titel, kurze Beschreibung und Link zu dieser Seite angezeigtwerden sollen macht dies in den meisten Fallen keinen Sinn. Die Losung hierfur ist, dass demServer mitgeteilt wird welche Informationen uberhaupt benotigt werden und von Interesse sind.Dazu wird der Parameter

”&fields=attribute1,attribute2(attribute2.1,attribute2.2). . . “ der GET

Request angefugt. Fur das oben beschriebene Beispiel konnte des folgendermaßen aussehen. . . &fields=items(title,link,snippet).Wenn die Suchmaschine durch Synonymsuche und die zu durchsuchende Internetseite durchHTML Tags, schema.org und vergleichbares optimiert ist, kann die maximale Anzahl derResultate minimiert werden, um so die Datenmenge zu reduzieren. Es ist dann nicht mehrnotwendig sehr viele Ergebnisse anzuzeigen, da das gewunschte Resultat unter den ersten funfTreffern vertreten sein sollte. Dies wird mit dem Parameter &maxResults=x realisiert, wobeix eine beliebige naturliche Zahl ist. Bei der kostenlosen Version ist x jedoch mit 0 < x <= 10begrenzt.Durch Komprimieren der Daten mit gzip kann die Bandbreite ebenfalls verringert werden. Umdiese Daten zu dekomprimieren wird zwar zusatzliche Prozessor Zeit benotigt, jedoch stelltes sich in der Kosten-Nutzen-Abwagung gegenuber den Netzwerkkosten als rentabel dar. Umeine solche komprimierte Datei empfangen zu konnen sind weitere Schritte erforderlich, wieetwa einen HTTP Header zu setzen, der die Codierung gzip akzeptiert, Accept-Encoding: gzip.Außerdem muss der UserAgent modifiziert werden damit dieser die Zeichenkette gzip enthalt.Wenn die Sprache des Benutzers dem Server durch

”hl=. . . “ angegeben wird, kann so die

Qualitat sowie Leistung der Suche verbessert werden, da dem Benutzer nur in seiner Spracheverfugbare Ergebnisse gezeigt werden. Außerdem ist die Suche auf Internet Seiten die imInland stationiert sind meist schneller zu erforschen was sich auf die Suchzeit positiv auswirkt,

”googlehost=google.xx“, xx steht fur dem Landercode eines Landes.

18

5 Programmierprojekt Synonymsuche

Ein Teil der gestellten Aufgabe dieser Arbeit bestand darin, neben den theoretischen Hinter-grunden auch ein praktisches Beispiel fur die Anwendung der Google Custom Search zu schaffen.Dabei sollte insbesondere die Synonymsuche und die eigene Einbindung von Synonymen imVordergrund stehen. Das Projekt basiert dabei vollstandig auf den kostenlos verfugbaren Funk-tionen der API, was zu diversen Einschrankungen bei der Funktionalitat fuhrt. Insbesondere istes nicht moglich eine eigens erstellte HTML-Webseite zu durchsuchen, hierfur ware die GoogleCustom Site Search notwendig. Nichtsdestotrotz soll die erstellte Seite einen praktischen Einblickin die Seitensuche liefern. Dies wird naherungsweise erreicht, indem die Einstellungen so gesetztsind, dass die Wikipedia Seiten mit Hilfe einer selektiven Suche (siehe Kapitel 3.3.1) durchsuchtwerden. Eine eigene Seiten-Durchsuchung wurde dann absolut analog funktionieren, setzt aberauch voraus, dass die entsprechende Seite einer Domain zugewiesen ist und von Google gemaßden in Kapitel 2.4 dargestellten Prinzipien indexiert werden kann.Die entstandene Seite basiert auf HTML5, CSS3 und JavaScript. Dies kann dazu fuhren, dassgewisse Funktionen der Seite, wie etwa die XML-Exportierung (siehe Kapitel 5.3) nicht aufjedem Browser lauffahig sind. Da es sich mehr um ein Beispielobjekt als eine konkret zu nutzendeAnwendung handelt wurde die Funktion nur in Mozilla Firefox Version 46.01 und Google ChromeVersion 51.0.2704.84 getestet.Der vollstandige Code aller geschriebenen Programme findet sich im Anhang.

5.1 HTML und CSS

Abbildung 5: Ausschnitt aus der fur das Projekt erzeugten Suche

Bei der erstellten Website handelt es sich um eine sehr rudimentare Darstellung einer Suche.Sie enthalt Suchfeld, eine Schaltflache zur Suchauslosung, ein Einstellungsfenster und eineErgebnisanzeige.

19

GrundfunktionenSuchfeld Eingabe des zu suchenden BegriffsSuchen Auslosung der SuchanfrageSuchverfeinerungenWeiterer Suchbegriff Soll nach mehr als einem Wort gesucht werden, kann dies in

diesem Textfeld angegeben werden. Es ist allerdings auchmoglich weitere Worte oder logische Operatoren in dasSuchfeld selbst einzugeben.

Suchbegriff der enthalten sein muss Textfeld zur Eingabe eines Zwangsweise auftretenden Such-begriffs. Auf Grund der Synonymsuche, sowie den in Kapitel3 erklarten Kriterien, nach denen eine Suche ausgefuhrtwird kann es dazu kommen, dass der ursprunglich eingege-bene Suchbegriff nicht mehr in der Suche auftaucht. Soller jedoch beinhaltet sein kann dieses Textfeld verwendetwerden, um dies zu erzwingen.

Wort ausschließen Soll ein spezifischer Begriff nicht in den Resultaten vor-kommen, so kann er mit Hilfe dieses Textfeldes angegebenwerden.

Allgemeine Einstellungenohne Duplikate Verhindert die Anzeige von doppelten Ergebnissen.Anzahl Suchergebnisse Die Anzahl der angezeigten Suchergebnisse kann man Hilfe

des Schiebereglers eingestellt werden. Die maximale Anzahlist hierbei auf 10 begrenzt.

Sprache Einstellung, mit welchen Sprachen gesucht werden soll.Beispielhaft wurden hierbei die deutsche und die englischeSprache implementiert. Analog konnten dementsprechendauch weitere Sprachen eingebunden werden.

SafeSearch Filtert nicht jugendfreie Inhalte aus den Resultaten. Eskann dabei zwischen verschieden Stufen gewahlt werden,welche entsprechend angepasste Filter verwenden.

Tabelle 1: Elemente der fur die Suche generierten Webseite

20

5.2 Synonym-Einbindung

Gezielt soll mit der Suche auch eine Manipulation von Synonymen moglich sein. Dazu mussenselbige eingebunden werden. Es soll zwar moglich sein spater selbst einfach Synonyme festzulegen,zur Veranschaulichung der Suche wurden jedoch eine Anzahl an Synonymen aus der openThesau-rus Datenbank [15] geladen. Es ist moglich diese in verschiedenen Dateiformaten herunterzuladenoder uber eine eigene API im Einzelfall anzufordern. Um die spatere Eingabe moglichst simpelzu halten wurde im Zuge dieses Projekts eine txt Datei verwendet. Je eine Zeile steht dabei furzueinanderpassende Synonyme, welche wiederum jeweils mit einem Semikolon getrennt sind.Sollen spater eigene Synonyme eingebunden werden genugt es so, eine entsprechend angeordnetetxt Datei anzulegen.Um die Synonyme in die Custom Search API einzubinden bedarf es jedoch einer XML-Datei mitentsprechend passenden, von Google vorgegebenen Tags. Zur einfachen Konvertierung wurdedaher ein auf C basierendes Programm synToXml geschrieben, dass diese Aufgabe ubernehmenkann.Zur Ausfuhrung muss das Programm nach der Kompilierung mit Kommandozeilenparameternaufgerufen werden. Der erste Parameter spezifiziert dabei den vollstandigen Dateipfad der Quelltxt Datei, der zweite Parameter den vollstandigen Dateipfad unter dem die Ziel XML-Dateiabgelegt werden soll. Nach der Konvertierung kann die XML-Datei uber das Google ControlPanel hochgeladen werden. Anschließend konnen die Synonyme bei einer Suche verwendetwerden. Zu beachten ist auch hier wieder die Einschrankung der kostenlosen API Version.Es kann daher nur eine XML-Datei mit begrenzter Anzahl an Synonymen und je maximal 4Varianten pro Synonym hochgeladen werden. Dies ist in synToXml bereits berucksichtigt.

5.3 JavaScript

Um die Kommunikation zwischen HTML-Seite und Custom Search API herzustellen bedientsich das Projekt JavaScripts. Sie geschieht in den zwei folgenden Schritten.

• Erzeugen und Senden eines XMLHttpRequestsEs wird eine URL erzeugt und an ein so genanntes XMLHttpRequest Objekt ubergeben.Die URL benotigt dabei sowohl key als auch id des Nutzers, uber dessen Suche dieFunktion ablaufen soll (siehe Kapitel 4.2). Zudem werden samtliche in den Einstellungenangegebene Optionen als weitere GET Objekte bzw. Variablen an die URL angehangt(siehe Kapitel 4.3). So entsteht eine lange, verkettete String Variable, in der die fertigeURL der Suchanfrage abgespeichert wird. Sie wird dann an das XMLHttpRequest Objektweitergegeben und uber den send()- Befehl an Google weitergeleitet.

• Abfrage und Anzeige der SuchergebnisseSobald die Suche erfolgreich war erfahrt das XMLHttpRequest Objekt eine entsprechendeStatusanderung und erhalt die entsprechende JSON Datei mit den gemaß Ranking sor-tierten Suchergebnissen. Das Script veranlasst daraufhin ihre Verarbeitung. Die einzelnen

21

Eintrage der JSON Datei werden in Strings umgewandelt und konnen nun abgerufen undauf der Seite angezeigt werden. Das Script ist dabei so eingestellt, dass es jeweils denSeitentitel als URL-Link und ein Snippet, also einen kurzen Ausschnitt der Seite, anzeigt.Die Seiten werden bei Auslosen des Links direkt innerhalb der Suchseite angezeigt.

JavaScript wird zudem dazu verwendet, das Einstellungsfenster ein- und wieder auszublenden.Sollte vom Nutzer zudem eine Weiterverarbeitung der Suchergebnisse gewunscht sein, so kanneine entsprechende XML-Datei erzeugt werden:

• Konvertieren der Suchergebnisse zu XMLNachdem eine erfolgreiche Suche durchgefuhrt wurde, wird eine weitere Schaltflacheeingeblendet, die es ermoglicht eine XML-Datei der Suchergebnisse zu erzeugen. Auf Grundvon Sicherheitsbedenken ist es nicht moglich mit im Browser ausgefuhrtem JavaScriptDateien zu erzeugen oder zu beschreiben. HTML5 liefert zwar eine Moglichkeit, Dateiendirekt zu lesen, Dateien zu beschreiben ist jedoch nicht direkt moglich. Daher muss einUmweg uber das sogenannte Blob interface gewahlt werden. Ein Blob Objekt besteht dabeiaus einer byte Sequenz und kann direkt als ObjectURL, also als im Browser bestehendesObjekt angelegt werden. Die Suchergebnisse werden im Script mit den fur XML benotigtenTags konkateniert und an den Blob-Konstruktor ubergeben. Ein Schreiben des Objektsauf einen Speicher ist aber auch fur Blobs nicht moglich. Daher muss der Browser dasObjekt als Download bereitstellen. So entstehen keine Sicherheitslucken, der Nutzer wirdwie bei anderen Downloads benachrichtigt oder je nach Einstellung des Browsers nachSpeicherort und gewunschtem Namen der Datei gefragt.

6 Diskussion und Ausblick

Die Google Custom Search bietet eine Vielzahl an Moglichkeiten, die Google Engine auf einereigenen Webseite zu verwenden. Das großte Problem besteht dabei jedoch in der Tatsache, dassviele Features, insbesondere die Custom Site Search, mit Kosten verbunden sind. Mit einigenWorkarounds ist es dennoch moglich die Ergebnisse in geeignetem Format auszugeben. Fur dieManipulation der Ergebnisse gilt ahnliches.Die im Zuge dieses Projekts erzeugten Programme und Webseite bieten daher nur ein sehrvereinfachtes Beispiel. Viele Funktionen konnten nicht implementiert werden. Eine deutlicheinfachere Alternative fur kleine Webseiten findet sich mit der Google Search Box (siehe AnhangE). Wahrend mit diesem Tool zwar keine Anmeldung erforderlich ist, ist es auch nicht moglichEinstellungen zu treffen oder Ergebnisse weiterzuverarbeiten. Je nach Anwendungsgebiet kanndies jedoch bereits ausreichen. Sollten hingegen zwingend weitergehende Einstellungen notigsein, so bietet es sich an den kostenpflichtigen Teil der Google Custom Search API zu verwendenoder komplett auf andere Alternativen zuruckzugreifen.

22

7 Quellen

Literatur

[1] Dirk Lewandowski: Suchmaschinen verstehen.Springer–Verlag, Berlin Heidelberg, 2015.

[2] Michael Gloggler: Suchmaschinen im Internet - Funktionsweise, Ranking Methoden,Top Positionen.Springer–Verlag, Berlin Heidelberg, 2003.

[3] W. Bruce Croft, Donald Metzler, Trevor Strohman: Search Engines - InformationRetrieval in Practice.W.B. Croft, D.Metzler, T.Strohman–Verlag, 2015.

[4] Amy N. Langville, Carl D. Meyer: Google’s PageRank and Beyond: The Science ofSearch Engine Rankings.Princeton University Press, 2006.

[5] Google: Produktfeedspezifikation.https://support.google.com/merchants/answer/188494?hl=de

aufgerufen am 01.06.2016.

[6] InfoWissWiki: Information Retrieval im Web.http://wiki.infowiss.net/Information_Retrieval_im_Web

18.08.2010, aufgerufen am 02.06.2016.

[7] Google: Google-Crawler.https://support.google.com/webmasters/answer/1061943?hl=de

aufgerufen am 02.06.2016.

[8] Wordstream: The History of Search Engines - An Infographic .http://www.wordstream.com/articles/internet-search-engines-history

aufgerufen am 03.06.2016.

[9] Barry Schwartz: Now we know: Here are Google’s top 3 search ranking factors.http://searchengineland.com/now-know-googles-top-three-search-ranking-

factors-245882

24.03.2016, aufgerufen am 04.06.2016.

[10] Danny Sullivan: FAQ: All About The New Google RankBrain Algorithm.http://searchengineland.com/faq-all-about-the-new-google-rankbrain-

algorithm-234440

27.10.2015, aufgerufen am 04.06.2016.

23

[11] Abhay Prakhash: Techniques for Deep Query Understanding.https://arxiv.org/pdf/1505.05187

aufgerufen am 06.06.2016.

[12] Google: Suchoperatoren.https://support.google.com/websearch/answer/2466433?hl=de

aufgerufen am 06.06.2016.

[13] Google: Google Custom Search.https://developers.google.com/custom-search/docs/overview

aufgerufen am 04.06.2016.

[14] Mozilla: Developer Networkhttps://developer.mozilla.org/de/docs/Web/API/Blob

aufgerufen am 04.06.2016.

[15] openthesaurushttps://www.openthesaurus.de/

aufgerufen am 04.06.2016.

Bilder

[GPB01] Directed graph representing web of six pages.Google’s PageRank and Beyond: The Science of Search Engine RankingsPrinceton University Press, 2006, S. 26, Figure 3.1.

[INV01] Michael Gloggler: Invertiertes Dateisystem.Suchmaschinen im Internet - Funktionsweise, Ranking Methoden, Top PositionenSpringer–Verlag, Berlin Heidelberg, 2003, S. 59, Abb. 3.5.

[ZSS01] Dirk Lewandowski: Zeitliche Stellung einer Suchanfrage.Suchmaschinen verstehenSpringer–Verlag, Berlin Heidelberg, 2016, S. 58, Abb. 3.15.

[PBD01] Performance By Design.http://3.bp.blogspot.com/-IExYrdyFT_c/VBM0g6kHxpI/AAAAAAAAAOo/

Uhatp5ZQAHQ/s1600/Simple%2BHTTP%2BGET%2BRequest.jpg

aufgerufen am 09.06.2016

[PHC01] phpclasses.org.http://files.phpclasses.org/files/blog/file/Google%20Custom%20Search%

20API.jpg

aufgerufen am 04.06.2016

24

A synToXml.c

//

// main.c

// synonym

//

// Created by Sven Trittler on 07.06.16.

// Copyright (c) 2016 Sven Trittler. All rights reserved.

//

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <wchar.h>

#define MAX_LEN 256

int main(int argc , char* argv []){

char* line = malloc(sizeof(char)*MAX_LEN);

char delimiter [] = ";";

int count=0, c=0, variant =0;

char *ptr;

//1 Kommandozeilenparameter = Ort der Synonym Datei

//2 Kommandozeilenparameter = Zielort der resultierenden XML Datei

FILE *stream = fopen(argv[1],"r");

FILE* fp = fopen(argv[2],"w");

/* Zufallsvariable erzeugen , da in Google CSE nur eine begrenzte

Anzahl der Synonymen erlaubt ist.

Damit nicht nur die ersten Ergebnisse geladen werden wird die

Zufallsvariable , die nach Uhrzeit verschieden ist benoetigt.

Diese wird bei der Auswertung durch die Funktion rand() verwendet.*/

time_t t;

time(&t);

srand (( unsigned int)t);

//Xml Datei aufbauen

fprintf(fp , "<?xml version =\"1.0\" encoding =\"UTF -8\"? >\n");

fprintf(fp , "<Synonyms >\n");

/*Hier wird die Datei mit den Synonymen Zeilenweise mit fgets()

ausgelesen.

Durch strtok (...) wird die Zeile in einzelne Woerter , die mit ;

getrennt sind , aufgeteilt.*/

while (!feof(stream)) {

25

fgets(line , MAX_LEN , stream);

ptr = strtok(line , delimiter);

if(rand() % 150 == 0){

c++;

while(ptr != NULL) {

if(count ++ == 0){

fprintf(fp , "<Synonym term =\"%s\">\n",ptr);

} else if(count <= 4){

variant ++;

fprintf(fp , "<Variant >%s</Variant >\n",ptr);

}

// naechsten Abschnitt erstellen

ptr = strtok(NULL , delimiter);

}

fprintf(fp , "</Synonym >\n");

count = 0;

}

}

fprintf(fp , "</Synonyms >");

// Ausgabe der Anzahl der Synonymen und Anzahl der insgesamt enthalten

Varianten aller Synonyme

printf("Anzahl Synonyme %d\nAnzahl Varianten %d\n",c,variant);

fclose(stream);

fclose(fp);

free(line);

return 0;

}

B script.js

// Global definierte Variablen

var xmlhttp = new XMLHttpRequest ();

// Schluessel

var key="AIzaSyBKXVfki -FqX4h067P -f6LkQnl8pf7XiXY";

// Google ID

var id="015649952087043387046: cy4f46jzdna";

var url_default = "https ://www.googleapis.com/customsearch/v1?key="+key+"

&cx="+id+"&q=";

const links = new Array (10);

26

/* Funktion zur Erstellung der URL die an das XMLHttpRequest Objekt

uebergeben wird

Wird gemaess den auf der HTML -Seite getroffenen EInstellungen

gefuellt */

function send(){

document.getElementById("dwnxml").style.display="";

document.getElementById("Ergebnisse").style.display="none";

var url = url_default +document.getElementById("input").value;

if(document.getElementById("spoiler").style.display ==""){

switchspoiler ();

}

if(document.getElementById("check_duplikate").checked == true){

url += "&filter =1";

} else {

url += "&filter =0";

}

var lang = ["de", "en"];

for (var i = 0; i < lang.length; i++) {

if(document.getElementById(lang[i]).checked == true){

url += "&hl="+lang[i];

//url += "& googlehost=google ."+ lang[i];

}

}

if(document.getElementById("radio_medium").checked == true){

url += "&safe=medium";

} else if(document.getElementById("radio_high").checked == true){

url += "&safe=high";

} else {

url += "&safe=off";

}

url += "&num="+document.getElementById("range_anzahl").value;

if(document.getElementById("input_exclude").value != ""){

url += "&excludeTerms="+document.getElementById("input_exclude").

value;

}

if(document.getElementById("input_orterm").value != ""){

url += "&orTerms="+document.getElementById("input_orterm").value;

}

if(document.getElementById("input_exactterms").value != ""){

27

url += "&exactTerms="+document.getElementById("input_exactterms")

.value;

}

// Senden der URL

xmlhttp.open("GET", url , true);

xmlhttp.send();

};

/* Abfrage nach Aenderung des xmlhttp Objekts. Aenderung bedeutet

eine Antwort der Google Server

welche entsprechend verarbeitet wird

Wird eine JSON Datei empfangen so wird diese in ein Stringarray

umgewandelt

und die entsprechende Verarbeitungsfunktion ausgeloest */

xmlhttp.onreadystatechange = function (){

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

var myArr = JSON.parse(xmlhttp.responseText);

myFunction(myArr);

}

};

/* param: Stringarray arr

Die Funktion zerlegt die einzelnen Stringarrays in die

gewuenschten Teile.

Sie werden anschliessend sowohl direkt in die HTML -Datei ,

als auch in einen konkatenierten String auf dem lokalen Speicher

geschrieben */

function myFunction(arr) {

var out = "";

var i,j;

var term="";

var xmlstr="<?xml version =\"1.0\" encoding =\"UTF -8\"? >\n<

searchresults >\n<searchterm >\n"+document.getElementById("input

").value+"\n</searchterm >\n";

localStorage.setItem("searchterm", document.getElementById("input

").value);

document.getElementById("Suchergebnisse").innerHTML = "<h3>

Suchergebnisse </h3 >";

document.getElementById("Suchergebnisse").innerHTML += " Typ: "+arr.

url.type+"<br >";

xmlstr += "<type >\n"+arr.url.type+"\n</type >\n";

document.getElementById("Suchergebnisse").innerHTML += " Art der

Suche: "+arr.kind+"<br>";

xmlstr += "<kind >\n"+arr.kind+"\n</kind >\n";

document.getElementById("Suchergebnisse").innerHTML += " Verwendete

Suchmaschine: "+arr.context.title+"<br >";

xmlstr += "<contexttitle >\n"+arr.context.title+"\n</ contexttitle

>\n";

document.getElementById("Suchergebnisse").innerHTML += " "+arr.

searchInformation.formattedTotalResults+" Ergebnisse <br>";

28

xmlstr += "<totalresults >\n"+arr.searchInformation.

formattedTotalResults+"\n</ totalresults >\n";

document.getElementById("Suchergebnisse").innerHTML += " "+arr.

searchInformation.searchTime+" Millisekunden <br>";

xmlstr += "<searchtime >\n"+arr.searchInformation.searchTime+"\n</

searchtime >\n";

for (var i = 0; i < arr.items.length; i++) {

var item = arr.items[i];

links[i]=item.link;

var StrippedString = item.snippet.replace (/( <([^ >]+) >)/ig

,"");

xmlstr +="<searchitem >\n<title >\n"+item.htmlTitle+"\n</

title >\n<url >\n"+links[i]+"\n</url >\n<snippet >\n"+

StrippedString+"\n</snippet >\n</ searchitem >\n";

term = "<br ><a href="+"javascript:result("+i+");"+">"+item.

htmlTitle + " </a>"+"<br>"+item.snippet+"<br>";

document.getElementById("Suchergebnisse").innerHTML += term;

}

xmlstr +="</searchresults >\n";

localStorage.setItem("xml", xmlstr);

};

/* Erzeugt die Links hinter den Suchergebnissen und blendet

Suchergebnisse ein */

function result(id){

document.getElementById("Suchergebnisse").innerHTML = "";

document.getElementById("frame").src = links[id];

document.getElementById("Ergebnisse").style.display="";

};

/* Blendet Einstellungen aus und ein */

function switchspoiler (){

if (document.getElementById("spoiler").style.display =="none"){

document.getElementById("spoiler").style.display="";

document.getElementById("einstellungen").innerHTML = "&#9662;

Einstellungen";

}else{

document.getElementById("spoiler").style.display="none";

document.getElementById("einstellungen").innerHTML = "&#9654;

Einstellungen";

}

};

/* Erzeugt ein Blob -Element und veranlasst einen Download als XML -Datei

*/

function saveTextAsFile (){

var textToWrite = localStorage.getItem("xml");

var textFileAsBlob = new Blob([ textToWrite], {type:’text/xml’});

29

var fileNameToSaveAs = "search_"+localStorage.getItem("searchterm

")+".xml";

var downloadLink = document.createElement("a");

downloadLink.download = fileNameToSaveAs;

downloadLink.innerHTML = "Download File";

// Unterstuetzung verschiedener Browser

if (window.URL != null){

downloadLink.href = window.URL.createObjectURL(textFileAsBlob);

}

else{

downloadLink.href = window.URL.createObjectURL(textFileAsBlob);

downloadLink.onclick = document.body.removeChild(event.target);

downloadLink.style.display = "none";

document.body.appendChild(downloadLink);

}

downloadLink.click();

}

/* Ermoeglicht Suche ueber EnterTaste */

function keysend(e){

if(e.keyCode === 13){

send();

}

}

C cseapi.html

<!DOCTYPE html>

<html>

<header >

<title>Seminar Google Custom Search API Example </title>

<meta http -equiv="content -type" content="text/html; charset=utf -8">

<link href="style.css" type="text/css" rel="stylesheet" />

<script src="script.js"></script >

</header >

<body>

<div id="fix">

<div id="img_wrapper">

<p>&copy 2016 Moritz Dickenherr , Florian Michel , Fabian Kurz ,

Sven Trittler. Google Custom Search API Example.</p>

<h1>Synonymbasierte Suchmaschine </h1>

<input type="text" id="input" placeholder="Suchbegriff"

onkeypress="keysend(event)">

<button onclick="send()">Suchen </button >

<button id="dwnxml" onclick="saveTextAsFile ()" style="

display:none">XML herunterladen </button ><br><br>

30

<h4 id="einstellungen" onclick="javascript:switchspoiler (1);"

style="cursor:pointer;">&#9654; Einstellungen </h4>

<div id="spoiler" style=display:none>

<h5>Weiterer Suchbegriff </h5>

<input type="text" id="input_orterm" placeholder="Weiterer

Suchbegriff">

<br><br><h5>Suchbegriff der enthalten sein muss</h5>

<input type="text" id="input_exactterms" placeholder="Suchbegriff

der enthalten sein muss">

<br><br><h5>Wort ausschliessen </h5>

<input type="text" id="input_exclude" placeholder="

Auszuschliessender Suchbegriff">

<br><br><h5>Allgemeine Einstellungen </h5>

<input type="checkbox" id="check_duplikate"> ohne Duplikate

<br><br>

<form oninput="numerisch.value=auswertung.value">

<input type="range" name="auswertung" min="1" max="10" value=

"5" id="range_anzahl">

Suchergebnisse: <output name="numerisch">5</output >

</form>

<br><br><h5>Sprache </h5>

<input type="radio" name="language" id="de" checked > Deutsch

<input type="radio" name="language" id="en"> Englisch

<br><br><h5>SafeSearch </h5>

<input type="radio" name="safesearch" id="radio_off" checked > off

<input type="radio" name="safesearch" id="radio_medium"> medium

<input type="radio" name="safesearch" id="radio_high"> high

</div>

</div>

</div>

<article id="main">

<div id="Suchergebnisse"></div>

<div id="Ergebnisse" style="display:none">

<iframe id="frame" src=""></iframe >

</div>

</article >

</body>

</html>

31

D style.css

/* CSS Document */

body {

padding: 0;

margin-left: 200px;

font-family: Arial;

font-size: 14px;

min-width:600px;

}

#nav {

background-color: #000000;

}

iframe{

width: 1000px;

height: 1000px;

}

TEXTAREA {

font-size: 17px;

}

#nav_wrapper {

width: 800px;

text-align: left;

}

#img_wrapper {

width: 100%;

margin-left: 100px;

margin-bottom: 50px;

text-align: left;

background-color: #FFFFFF;

}

* {

padding: 0px;

margin:0;

font-family: ’Liberation Sans’, Arial , Helvetica , sans-serif;

}

body {

background: #ffffff;

margin-left: 100px;

}

32

input[type="text"]{

height: 30px;

width: 300px;

font-size: 16px;

}

input[type = "checkbox"]{

height: 20px;

width: 20px;

}

button{

height: 30px;

width: 150px;

}

#container {

background: white;

margin: 0 auto;

padding: 5px;

max-width:1200px;

}

#fix {

position: fixed;

margin-left: auto;

margin-right: auto;

left: 0;

right: 0;

}

#container * { padding: 5px; }

#nav-main { background: #97 a2aa; }

#main { background: #ffffff;padding-top: 150px; }

/* Layout mit Flexbox */

#main {

-webkit-flex:3;

flex:4;

-webkit-order:2;

order:2;

}

33

E Google Search Box

<form method="get" action="http :// www.google.com/search"> <input type="

text" name="q" size="31" maxlength="255" value="" /> <input type="

submit" value="Google Search" /> <input type="radio" name="sitesearch"

value="" /> The Web <input type="radio" name="sitesearch" value="

meineWebseite.com" checked /> Seitensuche <br /> </form>

34