johannes p osterhoff
   _ _ _     _ _     _     _   _ _ _ _     _ _ _   _ _ _     _ _ _ _   _ _ _     _ _ _ _                 _           _ _   
 _|_|_|_|  _|_|_|_  |_|   |_| |_|_|_|_|  _|_|_|_| |_|_|_|   |_|_|_|_| |_|_|_|   |_|_|_|_|              _|_|        _|_|_|_ 
|_|_|_ _  |_|   |_| |_|   |_| |_|_ _|_| |_|       |_|_|     |_|_ _|_| |_|_|     |_|_ _|_|             |_|_|       |_|   |_|
 _ _|_|_| |_|_ _|_| |_|_ _|_| |_|_|_|_| |_|_ _ _  |_|_ _ _  |_|_|_|_| |_|_ _ _  |_|_|_|_|            _ _|_|_   _  |_|_ _|_|
|_|_|_|_|   |_|_|     |_|_|_| |_| |_|   |_|_|_|_| |_|_|_|_| |_| |_|   |_|_|_|_| |_| |_|             |_|_|_|_| |_|   |_|_|  
 _ _ _ _   _ _ _       _ _ _   _ _ _               _ _ _ _   _ _ _   
|_|_|_|_| |_|_|_|    _|_|_|_| |_|_|_|_            |_|_|_|_| |_|_|_|   [ IMG SRC SRC ]
|_|_ _|_| |_|_|     |_|_|_|_| |_|   |_|           |_|_| |_| |_|_|     [ the IMG SRC ORG Codebook ]
|_|_|_|_| |_|_ _ _  |_|_ _|_| |_|_ _|_|  _ _ _ _  |_|_| |_| |_|_ _ _  
|_| |_|   |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|_| |_| |_|_|_|_| [ a tribute 2 pre ]
                                                                      [ v 1.0 ]

 1) Intro     
 2) Overview    

 3) URL_CHK      8) TXT_DLT
                 9) IMG_DLT 
 4) TXT_SCN     
                10) TXT_CTR
 5) TXT_CHK     11) IMG_CTR
 6) IMG_CHK     12) USR_CTR

 7) IMG_SRC     13) End

 _ _ _ _ 
|_|_|_|_|



     _     _           _ _ _   _     _   _ _ _ _   _ _ _ _     _ _   
   _|_|   |_|_        |_|_|_| |_|_  |_| |_|_|_|_| |_|_|_|_|  _|_|_|_ 
  |_|_|     |_|         |_|   |_|_|_|_|     |_|   |_|_ _|_| |_|   |_|
 _ _|_|_   _|_|      _ _|_|_  |_| |_|_|     |_|   |_|_|_|_| |_|_ _|_|
|_|_|_|_| |_|       |_|_|_|_| |_|   |_|     |_|   |_| |_|     |_|_|  

Suchmaschinen gibt es wie Sand am Meer. Versucht man dagegen die Arbeitsweise dieser "Crawler" und "Spider" zu verstehen, stellt man schnell fest: die Menge der existierenden Suchmaschinen ist viel höher als die Anzahl ihrer Dokumentationen. In den Weiten des World Wide Web ist es schwierig, eine wirkliche Suchmaschinen-Anleitung zu finden und auch in Fachverlagen sind gute Dokumentation rar.

Letzendlich ist die Programmierung einer Suchmaschine nicht besonders kompliziert. Dass dabei kein zweites "Google" herauskommt, muss den Anfänger der Suchmaschinen-Programmierung nicht verwundern, schließlich kämpft sich auch der mächtigste Softwaregigant der Welt seit Jahren mühsam ab, die Reife von "Google" zu erreichen.

Bei Suchmaschinen dreht sich alles um das automatische "Lesen" von Dokumenten, die Interpretation des "Gelesenen", das Speichern desselben in Datenbanken, das möglichst schnelle Auslesen aus diesen sowie eine ganze Menge optimierter, schneller und gut abgestimmter Hardware.

Um die Beschreibung der benötigten Technologie geht es in dieser kleinen Einleitung zu Suchmaschinen nur am Rande. Ich möchte lediglich darauf hinweisen,

  1. dass es nicht so schwierig ist, eine Suchmaschine zu programmieren,
  2. welche Überlegungen man bezüglich der Konzeption einer solchen anstellen könnte
  3. und welches technische Wissen man sich aneignen sollte, um sein Vorhaben in die Tat umzusetzen.
  4. Die hier gezeigten Code-Beispiele sollen zudem den Einstieg in die Programmierung erleichtern.

Ausgangspunkt ist dabei "IMG SRC ORG", die Suchmaschine für Bilder, die ich im Rahmen meiner Masterarbeit im Sommer 2006 an der Merz Akademie in Stuttgart programmiert habe. Ursprünglich ging es dabei weniger darum, eine Suchmaschine im World Wide Web zu realisieren, sondern einen Interface-Vorschlag zur visuellen Bildersuche vorzustellen. Bei diesen Ausführungen, geht es also hauptsächlich um Bilder, und weniger um ausgefeilte Algorithmen zur Optimierung von Text. Diese Ausführungen und die hier gezeigten Code-Beispiele haben ihren Schwerpunkt demnach in der automatischen Extraktion von Bildern aus Web-Seiten.

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _ _ _     _           _ _     _     _   _ _ _     _ _ _ _   _     _     _ _ _   _ _ _     _     _ 
|_|_|_|_  |_|_       _|_|_|_  |_|   |_| |_|_|_|   |_|_|_|_| |_|   |_|   |_|_|_| |_|_|_|   |_|  _|_|
 _ _|_|_|   |_|     |_|   |_| |_|   |_| |_|_|     |_|_ _|_| |_|   |_|     |_|   |_|_|     |_| |_|_|
|_|_|_ _   _|_|     |_|_ _|_| |_|_ _|_| |_|_ _ _  |_|_|_|_| |_|_ _|_|  _ _|_|_  |_|_ _ _  |_|_|_|_|
|_|_|_|_| |_|         |_|_|     |_|_|   |_|_|_|_| |_| |_|     |_|_|   |_|_|_|_| |_|_|_|_| |_|_|_|_|

Die Konfiguaration des Projekts "IMG SRC ORG" ist zweigeteilt. Von dem ersten Server wird das World Wide Web nach Seiten und Bildern durchsucht. Dieser Server heißt "Sourcerer". Der aus den Daten dieses Servers erstellte Index wird aktuell gehalten, stetig erneuert und in regelmäßigen Abständen gesäubert. Wenn man so will, ist "Sourcerer" das "Arbeitstier" im Hintergrund von "IMG SRC ORG".

Der zweite Server heißt "Builder", auf ihm ist das schnelle Frontend von "IMG SRC ORG" und alle dafür benötigten Teile untergebracht. Auf der Festplatte dieses Rechners ruhen auch die kleinen Thumbnails für das Suchergebmis, die ihm seinen Namen geben. Von "Builder" wird in regelmäßigen Abständen ein Abgleich mit "Sourcerer" durchgeführt. Um die Suchabfrage zu beschleunigen, sind diese Daten im großen Hauptspeicher von "Builder" untergebracht.

Für die Suche im Hintergrund kann ein älterer Server verwendet werden. Da sie mit den Suchanfragen an das Frontend in keinem direkten Zusammenhang stehen. Im Falle von "Sourcerer" handelt es sich um einen alten AMD Athlon mit 800 Mhz. Die verwendeten Festplatten sind 100 GB groß, der Arbeitsspeicher beträgt 1 GB. Auf dem Server kommt die aktuelle Linux Distribution "Debian Etch" zum Einsatz, da diese die Versionen von PHP und MySQL der fünften Generation enthalten. Als Webserver wurde der Apache HTTP-Server in der Version Zwei verwendet.

Wesentlicher Bestandteil von "IMG SRC ORG" ist "CRON". Dieser Dienst auf Linux-Systemen ermöglicht es, Programme nach einem "Stundenplan" auszuführen. "CRON" ist ein "deamon", d.h. ein im Hintergrund auf bestimmte Aktionen wartendes Programm, das beim Booten von "init" gestartet wird und Programme entsprechend bestimmter Tabellen ausführt. Diese "Crontabs" enthalten neben Rechten und Zeitintervallen einen Pfad des auszuführenden Programms. "CRON" überprüft jede Minute, ob es Cron-Jobs gibt, die ausgeführt werden müssen. Dieses Prinzip sorgt für eine regelmäßige Ausführung der Module des "Sourcerer".

Der Suchprozess von "Sourcerer" gliedert sich in die hier beschriebenen Module, die jeweils für einen Teil des automatisierten Durchsuchens des WWW nach Bildern verantwortlich sind. Alle Programme wurden in PHP5 mit dem "Command Line Interface" (CLI) realisiert. Entgegen einer herkömmlichen (web-basierten) Nutzung von PHP zeichnet sich das "PHP CLI" durch folgende Merkmale aus:

  1. PHP-Code wird nicht im Browser "unsichtbar" während dem Aufruf einer Web-Seite ausgeführt, sondern in einer Linux-Shell, als "richtiges" Programm per Doppelklick auf ein Icon oder -- wie im Fall von "Sourcerer" automatisiert in Hintergrund.
  2. Echo- und Print-Kommandos werden in "real-time" ausgeführt und in die Shell bzw. separate (Log-) Dateien geschrieben.
  3. Die Dauer einer Programmausführung ist zeitlich unbeschränkt und ermöglich so auch längerer Schleifen oder rekursive Funktionen.
                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








   _ _ _   _         _     _   _ _ _ _   _                     _ _ _   _     _   _     _ 
  |_|_|_| |_|_      |_|   |_| |_|_|_|_| |_|                  _|_|_|_| |_|_ _|_| |_|  _|_|
    |_|_|   |_|     |_|   |_| |_|_ _|_| |_|                 |_|       |_|_|_|_| |_|_|_|  
 _ _ _|_|  _|_|     |_|_ _|_| |_|_|_|_| |_|_ _ _   _ _ _ _  |_|_ _ _  |_|   |_| |_|_|_|_ 
|_|_|_|_| |_|         |_|_|_| |_| |_|   |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|   |_| |_|   |_|

Wenn eine Internetadresse über das "Submit-Formular" an "IMG SRC ORG" übermittelt wird, versucht das Modul "URL_CHK" diese Adresse zu öffnen. Stellt dieses Programm die Existent (d.h. die Lesbarkeit) der übermittelten Adresse fest, wird sie über die Tabelle "ConfirmedUrls" an das Programm TXT_SCN weitergegeben. Wenn nicht, wird die Adresse gelöscht und nicht in den Index von ImageSource aufgenommen. Mehrfach existierenden Einträgen einundderselben Adresse wird durch eine Löschung mit Hilfe der MySQL-Syntax begegnet, die automatisch alle identischen Werte bei einem Delete-Abfrage entfernt.

Es gibt zwei Versionen von "URL_CHK": die erste überprüft durch Benutzer eingegebene URLs, die zweite verfolgt Links, die von "TXT_SCN" auf Web-Seiten gefunden wurden.

In-Tables: UserUrls (LinksToConfirm)
Out-Table: ConfirmedUrls
Taktung (bei normalem Traffic, je nach der Anzahl der zu bearbeitenden Bilder wird die Taktung der einzelnen Module automatisch angepasst): alle 15 Minuten
Identifiert sich in Log-Files als: Sourcerer/1.0 /// http://image-source.org/sourcerer/#url_chk
Den Code von URL_CHK_1 lesen
Den Code von URL_CHK_2 lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _         _           _       _     _     _                   _ _ _     _ _ _   _     _ 
|_|  _    |_|_       _|_|_ _  |_|_ _|_|  _|_|_ _             _|_|_|_|  _|_|_|_| |_|_  |_|
|_|_|_|_    |_|     |_|_|_|_|   |_|_|   |_|_|_|_|           |_|_|_ _  | |       |_|_|_|_|   
|_|_|_|_|  _|_|       |_|_     _|_|_|_    |_|_     _ _ _ _   _ _|_|_| |_|_ _ _  |_| |_|_|
    |_|   |_|         |_|_|   |_|   |_|   |_|_|   |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|   |_|

Dieses Programm öffnet die in ConfirmedUrls gespeicherten Seiten, "scannt" sie durch, erkennt mit Hilfe von Regulären Ausdrücken alle sich im HTML-Dokument befindlichen Links und alle in der Web-Seite beinhalteten Verweise auf Bilder mit Attributen. Läuft Sourcerer im "Quality-Modus" werden nur alle Links zu anderen Domains weiterverarbeitet; wenn "Sourcerer" im "Mass-Modus" arbeitet werden dagegen alle Links indiziert und (später) verfolgt.

Der "Quality-Modus" versucht mit der Beschränkung auf Links zu fremden Seiten nicht nur die Menge an Links einzuschränken, denen Sourcerer zu folgen hat, sondern auch eine gewisse Qualitätssicherung anzustreben. Dazu verfolgt der "Quality-Modus" auch nur Links, die nicht auf das Hauptverzeihnis sondern nur auf tiefere Verzeinisse dieser Server verweisen. Da davon auszugehen ist, dass beim "Verlinken" auf fremde (und "tiefe") Inhalte von einer für den Betreiber der ursprünglichen Domain hohen Relevanz auszugehen ist, lassen sich positive Rückschlüsse auf die Qualität der verlinkten Seite ziehen. Der "Mass-Modus" hat dagegen den Vorteil, einen sehr großen Anteil der Bilder einer Domain zu finden und zu indizieren. In der aktuellen Version von "Sourcerer" wird je nach Domain noch nicht nach "Quality-" oder der "Mass-Modus" unterschieden. [Dieses Feature soll in einer späteren Version eingebaut werden.]

Um der Menge der im World Wide Web auffindbaren Bilder und Seiten Herr zu werden, ignoriert "Sourcerer" Bilder unter der Mindestgröße und über der Höchstgrenze für Bilder liegen. Erkannte Links werden an das Programm URL_CHK zurückgegeben und dort überprüft, die Worte um gefundene Bilder herum, erkannte Überschriften u.ä. werden an ;TXT_CHK, Bilder (Dateiname und weitere Bild-Attribute wie Breite und Höhe) an IMG_CHK weitergegeben.

In-Table: ConfirmedUrls
Out-Tables: TextsToConfirm, ImagesToConfirm
Taktung (bei normalem Traffic): alle 15 Minuten
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#txt_scn
Den Code von TXT_SCN lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _ _ _ _   _           _       _     _     _                   _ _ _   _     _   _     _ 
|_|_|_|_| |_|_       _|_|_ _  |_|_ _|_|  _|_|_ _             _|_|_|_| |_|_ _|_| |_|  _|_|
|_|_|_|_    |_|     |_|_|_|_|   |_|_|   |_|_|_|_|           |_|       |_|_|_|_| |_|_|_|  
 _ _|_|_|  _|_|       |_|_     _|_|_|_    |_|_     _ _ _ _  |_|_ _ _  |_|   |_| |_|_|_|_ 
|_|_|_|   |_|         |_|_|   |_|   |_|   |_|_|   |_|_|_|_| |_|_|_|_| |_|   |_| |_|   |_|

Der "TextCheck" vergleicht die gefundenen Texte mit einer bestehenden Datenbank, die "verbotene" und erlaubte Schlüsselworten enthält und läßt die gefundenen Texte (mit ihren zusammenhängenden Bildern) für ihre weitere Verarbeitung zu oder nicht. Das Ziel dieses "Gatekeepers" ist so eine "Qualitätssicherung" und hauptsächlich eine Einschränkung der Bildermenge.

Verbotene Worte für den nahen Text um Bilder herum sind beispielsweise "Werbung", "Advert", "Sponsor" oder auch "Click here!".

In-Table: TextsToConfirm
Out-Tables: TextsConfirmed
Taktung (bei normalem Traffic): alle 15 Minuten
Identifikation: keine (arbeitet nur intern)
Den Code von TXT_CHK lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _ _ _     _           _ _     _ _ _ _   _ _ _ _               _ _ _   _     _   _     _ 
|_|_|_|_  |_|_        |_|_|   |_|_|_|_| |_|_|_|_|            _|_|_|_| |_|_ _|_| |_|  _|_|
|_|_|_|_|   |_|         |_|   |_|_| |_| |_|_ _|_|           |_|       |_|_|_|_| |_|_|_|  
|_|_ _|_|  _|_|      _ _|_|_  |_|_| |_| |_|_|_|_|  _ _ _ _  |_|_ _ _  |_|   |_| |_|_|_|_ 
|_|_|_|_| |_|       |_|_|_|_| |_|_| |_|   |_|_|_| |_|_|_|_| |_|_|_|_| |_|   |_| |_|   |_|

Dasselbe gilt auch für Bilderkriterien und so untersucht das Programm IMG_CHK Bilder beispielweise auf ihre tatsächliche Größe, ihr Seitenverhältnis und lehnt bestimmte Bilder ab. Dateinamen dürfen z.B. nicht mit "Pic" oder "DSCN" beginnen, da diese Kennungen nichts über den Inhalt der Bilder aussagen. Das Seitenverhältnis eines Bildes darf den Faktor zwei nicht überschreiten, da meistens Werbe-Banner in extremen Proportionen am Rand von Webseiten plaziert werden.

In-Table: ImagesToConfirm
Out-Tables: ImagesConfirmed
Taktung (bei normalem Traffic): alle 15 Minuten
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#img_chk
Den Code von IMG_CHK lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _ _ _ _   _           _ _     _ _ _ _   _ _ _ _               _ _ _   _ _ _ _     _ _ _ 
|_|_|_|_| |_|_        |_|_|   |_|_|_|_| |_|_|_|_|            _|_|_|_| |_|_|_|_|  _|_|_|_|
     _|_|   |_|         |_|   |_|_| |_| |_|_ _|_|           |_|_|_ _  |_|_ _|_| |_|      
    |_|    _|_|      _ _|_|_  |_|_| |_| |_|_|_|_|  _ _ _ _   _ _|_|_| |_|_|_|_| |_|_ _ _ 
    |_|   |_|       |_|_|_|_| |_|_| |_|   |_|_|_| |_|_|_|_| |_|_|_|_| |_| |_|   |_|_|_|_|

Das Herzstück von Sourcerer ist das Programm IMG_SRC. Es analysiert die ihm über die Tabelle ImagesConfirmed übergebenen Bilder mit Algorithmen für Farbverteilung, Helligkeit, Zentralität und schreibt diese in die zahlreichen ImageSource Tabellen für Bildattribute, die als Basis der visuellen Suche von "IMG SRC ORG" dienen.

Zunächst verkleinert IMG_SRC alle gefunden Bilder auf die Größe von 8 x 8 und 16 x 16 Pixeln und schreibt die ermittelten RGB-Werte in Tabellen. Zudem berechnet IMG_SRC die Helligkeit dieser 64 (oder 256 ) Farbfelder und notiert diese ebenfalls in eine separate Tabelle. Ein weiterer Algorithmus erkennt Farbbereiche und Farbgruppen auf der Bildebene. Diese Ergebnisse werden gespeichert und dienen dem Tracer-Programm zum vagen Erkennen von Linien.

Weitere Schritte von IMG_SRC sind das Berechnen einer gewichteten Farb-Balanz, die Kalkulation der Gesamt-Helligkeit des Bildes sowie das "Erkennen" von horizontaler, vertikaler Symmetrie und Punktsymmetrie, die besonders für das Sortieren der Suchergebnisse relevant sind.

Mit diesen Tabellen findet später der Abgleich bei der Suche der User nach ähnlichen Bildern statt. [In einer späteren Version wäre hier das genauere Erkennen von Linien kontarstierender Farbflächen wünschenswert.]

In-Table: ImagesConfirmed
Out-Tables:
ImagesSaved
ImagesBigRedValues, ImagesBigGreenValues, ImagesBigGreenValues
ImagesSmallRedValues, ImagesSmallGreenValues, ImagesSmallGreenValues
ImagesSmallBrightnessValues, ImagesBigBrightnessValues
ImagesSmallTraceValues, ImagesBigTraceValues
Taktung (bei normalem Traffic): alle 10 Minuten
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#img_src
Der Code von IMG_SRC können Sie per e-mail erhalten (order im lokalen Netz der Merz Akademie, Stuttgart aufrufen).

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      






Neben diesen Hauptapplikationen gibt es noch weitere "Bots", deren Tätigkeit weniger im Bereich der Akquirierung neuer Bilder und Seiten, sondern in der Pflege der bestehenden Inhalte bestehen. Diese automatischen "Bots" halten den Index von ImageSource aktuell und vor allem "sauber".

 

 _ _ _ _   _           _       _     _     _                 _ _ _     _           _     
|_|_|_|_| |_|_       _|_|_ _  |_|_ _|_|  _|_|_ _            |_|_|_|_  |_|        _|_|_ _ 
|_|_|_|_|   |_|     |_|_|_|_|   |_|_|   |_|_|_|_|           |_|   |_| |_|       |_|_|_|_|
|_|_ _|_|  _|_|       |_|_     _|_|_|_    |_|_     _ _ _ _  |_|_ _|_| |_|_ _ _    |_|_   
|_|_|_|_| |_|         |_|_|   |_|   |_|   |_|_|   |_|_|_|_| |_|_|_|_| |_|_|_|_|   |_|_| 

Die Aufgabe des "Bots" TXT_DLT ist es, den Index von "IMG SRC ORG" frei von nicht mehr existierenden Seiten und "broken links" zu halten. So überprüft TXT_DLT in regelmäßigen Abständen alle indizierten Web-Seiten auf ihre Aktualität und Gültigkeit. Existiert eine Seite nicht mehr, wird diese zunächst aus dem Index entfernt und in dem Zwischenspeicher "TextsDoubted" abgelegt. Alle mit ihr assoziierten Bilder werden mit dem Hinweis "Doubted" versehen und sind ab diesem Zeitpunkt nicht mehr im Index abrufbar. Vom Zwischenspeicher aus wird TXT_DLT einige Male versuchen, diese Seite zu erreichen. Scheitert dies mehrmals, wird die Seite auch aus dem Zwischenspeicher gelöscht. In diesem Fall werden auch alle mit ihr assoziierten Bilder entfernt.

Ist die Seite jedoch wieder erreichbar, wird sie vom Zwischenspeicher zurück in den Index kopiert. Alle mit ihr assoziierten Bilder verlieren ihren Status als "Doubted" und stehen wieder zur Suche bereit. [In einer späteren Version soll ein "Reliability-Index" für Seiten und Bilder eingeführt werden. Ist eine Seite selten zu erreichen, wirkt sich dies auf diesen Index für Verlässlichkeit aus.]

In- und Out-Tables: TextsSaved, TextsDoupted
Taktung des Programms: Aufruf alle 15 Minuten
Anzahl der Versuche eine Seite wieder zu erreichen (Standard): 5
Intervall (Standard): 2 Stunden
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#txt_dlt (geplant)
Den Code von TXT_DLT lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








 _ _ _ _   _           _ _     _ _ _ _   _ _ _ _             _ _ _     _           _     
|_|_|_|_| |_|_        |_|_|   |_|_|_|_| |_|_|_|_|           |_|_|_|_  |_|        _|_|_ _ 
|_|_ _|_|   |_|         |_|   |_|_| |_| |_|_ _|_|           |_|   |_| |_|       |_|_|_|_|
|_|_|_|_|  _|_|      _ _|_|_  |_|_| |_| |_|_|_|_|  _ _ _ _  |_|_ _|_| |_|_ _ _    |_|_   
    |_|_| |_|       |_|_|_|_| |_|_| |_|   |_|_|_| |_|_|_|_| |_|_|_|_| |_|_|_|_|   |_|_| 

Entsprechend seinem Bruder TXT_DLT überprüft IMG_DLT alle Bilder im Index von "IMG SRC ORG" und löscht diese bei einer andauernden Unerreichbarkeit. Das Löschen eines Bildes nimmt auf das Entfernen einer kompletten Seite aus dem Index keinen Einfluß. Nur wenn das letzte Bild einer Seite unerreicht bleibt, wird auch der Eintrag der Seite selbst im ImageSource-Index gelöscht.

In- und Out-Tables: ImagesSaved, ImagesDoupted
Taktung des Programms: Aufruf alle 15 Minuten
Anzahl der Versuche ein Bild wieder zu erreichen (Standard): 5
Intervall (Standard): 2 Stunden
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#img_dlt (geplant)
Den Code von IMG_DLT lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








     _       _ _     _           _       _     _     _                   _ _ _     _        _ _ _ _
   _|_|    _|_|_|_  |_|_       _|_|_ _  |_|_ _|_|  _|_|_ _             _|_|_|_|  _|_|_ _   |_|_|_|_|
  |_|_|   |_|   |_|   |_|     |_|_|_|_|   |_|_|   |_|_|_|_|           |_|       |_|_|_|_|  |_|_ _|_|
 _ _|_|_  |_|_ _|_|  _|_|       |_|_     _|_|_|_    |_|_     _ _ _ _  |_|_ _ _    |_|_     |_|_|_|_|
|_|_|_|_|   |_|_|   |_|         |_|_|   |_|   |_|   |_|_|   |_|_|_|_| |_|_|_|_|   |_|_|    |_| |_|  

Der "Bot" TXT_CTR kontrolliert entsprechend dem Programm IMG_CTR die Tabellen mit Text-Attributen der Bilder auf leere Felder und löscht in diesen äußert seltenen Fällen diese Einträge.

Table: TextsSaved
Taktung: Ständiges Ausführung des Programms
Identifikation: keine (arbeitet intern)
Den Code von TXT_CTR lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








     _         _     _           _ _     _ _ _ _   _ _ _ _               _ _ _     _        _ _ _ _
   _|_|      _|_|   |_|_        |_|_|   |_|_|_|_| |_|_|_|_|            _|_|_|_|  _|_|_ _   |_|_|_|_|
  |_|_|     |_|_|     |_|         |_|   | | |_|_| |_|_ _|_|           |_|       |_|_|_|_|  |_|_ _|_|
 _ _|_|_   _ _|_|_   _|_|      _ _|_|_  |_| |_|_| |_|_|_|_|  _ _ _ _  |_|_ _ _    |_|_     |_|_|_|_|
|_|_|_|_| |_|_|_|_| |_|       |_|_|_|_| |_| |_|_|     |_|_| |_|_|_|_| |_|_|_|_|   |_|_|    |_| |_|  

IMG_CTR kontrolliert den bestehenden Bilder-Index stichprobenartig auf Software-Fehler. Diese sind durch Beta-Testing so gut wie ausgeschlossen, dennoch kann es vorkommen, dass beim Ermitteln der einzelnen Farbfelder oder beim Schreiben der Werte in die Datenbank Fehler auftreten; die Werte der Farbfelder sind dann identisch. Da in diesem Fall die Wahrscheinlichkeit eines Softwarefehlers übermäßig groß ist, wird ein solches Bild selbstständig von IMG_CTR gelöscht.

Sind die Werte jedoch nur bis auf wenige Ausnahmen identisch wird eine e-mail mit der Aufforderung an den Administrator von "IMG SRC ORG" geschickt, dieses verdächtige Bild in menschlichen Augenschein zu nehmen. Entweder das Bild wird dann als Fehler erkannt und manuel entfernt oder es ist schlicht ein Bild mit einer sehr hohen Monochromatie und bleibt demnach im Index.

Table: ImagesSaved
Taktung: Ständige Ausführung des Programms
Identifikation: keine (arbeitet intern)
Den Code von IMG_CTR lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








     _     _ _ _     _         _     _     _ _ _   _ _ _ _               _ _ _     _        _ _ _ _
   _|_|   |_|_|_|_  |_|_      |_|   |_|  _|_|_|_| |_|_|_|_|            _|_|_|_|  _|_|_ _   |_|_|_|_|
  |_|_|    _ _|_|_|   |_|     |_|   |_| |_|_|_ _  |_|_ _|_|           |_|       |_|_|_|_|  |_|_ _|_|
 _ _|_|_  |_|_|_ _   _|_|     |_|_ _|_|  _ _|_|_| |_|_|_|_|  _ _ _ _  |_|_ _ _    |_|_     |_|_|_|_|
|_|_|_|_| |_|_|_|_| |_|         |_|_|_| |_|_|_|_| |_| |_|   |_|_|_|_| |_|_|_|_|   |_|_|    |_| |_|  

Über die Formulare "Report Broken Page" bzw. "Report Broken Image" können Fehlerhafte Web-Seiten und Bilder an "Sourcerer" übermittelt werden. Der "Bot" USR_CTR geht dabei genau nach denselben Algorithmen wie TXT_CTR und IMG_CTR vor und untersucht die indizierten Farbfelder auf Leere und Gleichheit. Findet der "Bot" identische Felder vor, wird das Bild auch hier automatisch entfernt. Sind die Werte nur annähernd identisch, wird wie bei den anderen beschriebenen Modulen eine e-Mail mit der Bitte der Überprüfung des entsprechenden Bildes an den Administrator von "Sourcerer" verschickt.

Tables: TextsSaved (HEAP), ImagesSaved (HEAP)
Taktung: Eine Ausführung des Programms findet standardmäßig zu jeder zweiten vollen Stunde statt.
Identifikation: Sourcerer/1.0 /// http://image-source.org/sourcerer/#usr_ctr
Den Code von USR_CTR lesen

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      








     _       _ _ _   _         _ _ _     _     _   _ _ _   
   _|_|     |_|_|_| |_|_      |_|_|_|   |_|_  |_| |_|_|_|_ 
  |_|_|       |_|_|   |_|     |_|_|     |_|_|_|_| |_|   |_|
 _ _|_|_   _ _ _|_|  _|_|     |_|_ _ _  |_| |_|_| |_|   |_|
|_|_|_|_| |_|_|_|_| |_|       |_|_|_|_| |_|   |_| |_|_|_|_|

Wie besonders die Code-Beispiele zeigen, liegt die Schwierigkeit der Suchmaschinen-Programmierung nicht nur in den konzeptionellen Überlegungen -- meist warten die Schwierigkeiten im Detail. Viele Kleinigkeiten müssen berücksichtigt werden, wie beispielsweise Frames, Sonderfälle in Dateinamen, oder Bild-Verweise, die nicht immer auf das Verzeichnis verweisen, in dem sich die Bilder befinden. Das Berücksichtigen dieser Details benötigt mitunter viel Zeit und so konnte bei "IMG SRC ORG" erst nach einigen Wochen die erste Test-Phase abgeschlossen werden. Mit den kommentierten Beispielen habe ich versucht, Ihnen die Arbeit zu erleichtern -- einige Teile können sicher auf Ihre Suchmaschine angepasst werden und dürften Ihnen auch teilweise das Schrteiben von Code abnehmen.

Sollte es besonders während der Entwicklung auch mühsam sein, die "Netiquette" zu beachten, versuchen Sie die Wünsche der Besitzer und Autoren der Seiten, die Sie durchsuchen möchten, zu respektieren. Die Datei "robots.txt" im Hauptverzeichnis von Servern und Meta-Tags auf den einzelnen Seiten bieten Autoren die Möglichkeit, nur bestimmte Dateien und Verzeichnisse für die Öffentlichkeit freizugeben. Sollte es auch mühsam sein, versuchen Sie mit Ihrem "Crawler" die Datei "robots.txt" auszulesen und dort als nicht-öffentlich gekennzeichnete Verzeichnisse auch zu respektieren. Den dafür entwickelten Programmcode von "Sourcerer" finden Sie im Modul TXT_SCN.

Auch sollten Sie darauf achten, Seiten nicht zu oft aufzurufen. Ein kleiner Fehler in einer Schleife sorgt schnell dazu, dass selbst große Seiten die von Ihnen verursachten tausend Aufrufe pro Minute nicht mehr schaffen. Zu einen ist dies nicht fair, zum anderen müssen Sie mit einer Sperrung Ihres "Robots" oder Ihrer IP-Adresse rechnen.

Suchmaschinen durchsuchen das das World Wide Web nicht nur mit dem Ziel, den Inhalt von Web-Seiten möglichst benutzerfreundlich auffindbar zu machen und "Crawler" werden bald wohl nicht mehr nur nach E-Mai-Adressen suchen, an die "Spam-Mails" verschickt werden können. Technologien, die illegal verwendete Texte und Bilder finden, stehen in den Startlöchern. Ob eine solche Nutzung von "Crawlern" das Ende der Offenheit, die im World Wide Web ein gegenseitiges und direktes Lernen am Medium ermöglichte, bleibt abzuwarten. Fest steht jedoch, dass diese Technologien nicht nur großen Eignern geschützten Materials vorenthalten bleiben darf.

Diese Dokumentation versteht sich als ein kleiner Beitrag, Einblicke in die größtenteils unbekannten Mechanismen von Suchmaschinen zu ermöglichen.

USR_CTR!


Bei Fragen, Kommentaren und Beschwerden schreiben Sie mir bitte einen elektronischen Brief.

                     _ _ _ _ 
                    |_|_|_|_|

             _         _         _ _     _ _ _   
           _|_|_     _|_|_ _   _|_|_|_  |_|_|_|_ 
          |_| |_|   |_|_|_|_| |_|   |_| |_|_ _|_|
                      |_|_    |_|_ _|_| |_|_|_|  
                      |_|_|     |_|_|   |_|      
   _ _ _     _ _     _     _   _ _ _ _     _ _ _   _ _ _     _ _ _ _   _ _ _     _ _ _ _                 _           _ _   
 _|_|_|_|  _|_|_|_  |_|   |_| |_|_|_|_|  _|_|_|_| |_|_|_|   |_|_|_|_| |_|_|_|   |_|_|_|_|              _|_|        _|_|_|_ 
|_|_|_ _  |_|   |_| |_|   |_| |_|_ _|_| |_|       |_|_|     |_|_ _|_| |_|_|     |_|_ _|_|             |_|_|       |_|   |_|
 _ _|_|_| |_|_ _|_| |_|_ _|_| |_|_|_|_| |_|_ _ _  |_|_ _ _  |_|_|_|_| |_|_ _ _  |_|_|_|_|            _ _|_|_   _  |_|_ _|_|
|_|_|_|_|   |_|_|     |_|_|_| |_| |_|   |_|_|_|_| |_|_|_|_| |_| |_|   |_|_|_|_| |_| |_|             |_|_|_|_| |_|   |_|_|  
 _ _ _ _   _ _ _       _ _ _   _ _ _               _ _ _ _   _ _ _   
|_|_|_|_| |_|_|_|    _|_|_|_| |_|_|_|_            |_|_|_|_| |_|_|_|   [ IMG SRC SRC ]
|_|_ _|_| |_|_|     |_|_|_|_| |_|   |_|           |_|_| |_| |_|_|     [ the IMG SRC ORG Codebook ]
|_|_|_|_| |_|_ _ _  |_|_ _|_| |_|_ _|_|  _ _ _ _  |_|_| |_| |_|_ _ _  
|_| |_|   |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|_|_|_| |_|_| |_| |_|_|_|_| [ v 1.0 ]




                     _ _ _ _ 
                    |_|_|_|_|