Projekt 2018 – 2020 · archiviertZyperSearch

Die intelligente Suchmaschine von nebenan

Prototyp einer Web-Suchmaschine mit Crawler-Netzwerk, Volltextsuche und KI-gestützter Bildersuche – entstanden 2018/2019 als Bachelorarbeit an der Hochschule Merseburg.

Die Idee

Eine eigene Suchmaschine bauen – vom Crawler bis zur Suchmaske

ZyperSearch war der Versuch, ein vollständiges Information-Retrieval-System selbst zu bauen: ein Netzwerk aus Crawlern sammelt Webseiten, Dokumente und Bilder, ein Server legt alles in einer Datenbank ab, und ein Web-Frontend beantwortet Suchanfragen. Klassische Volltextsuche für Text, ein neuronales Netz für Bilder.

Volltextsuche

Boolesche Suche über Titel, Meta-Keywords und Seiteninhalt, gespeichert in MySQL. Ergebnisse werden nach Trefferhäufigkeit sortiert – ein späterer Ausbau brachte ein Ranking der Suchwörter.

Bildersuche mit neuronalem Netz

Jedes gefundene Bild wird mit TensorFlow (Inception-Modell) klassifiziert und per Tesseract-OCR nach Text durchsucht. Gesucht wird also nach dem, was auf dem Bild ist – nicht nur nach dem Dateinamen.

Dokumente inklusive

PDF-, Word-, Excel- und PowerPoint-Dateien werden mit Apache PDFBox und Apache POI ausgelesen und wie Webseiten indexiert. Die Suchmaske filtert nach Webpages, PDF und Office.

Architektur

Drei getrennte Module, verbunden über Sockets und eine Datenbank

Der Prototyp lief im Intranet der Hochschule Merseburg: Die Crawler auf Poolrechnern und zwei ausgemusterten Servern, der Datenbank- und Webserver in der DMZ. Jeder Crawler holt sich beim Server den ältesten unbearbeiteten Link (FIFO), analysiert ihn und meldet Inhalt, MIME-Type und neu gefundene Links zurück.

Crawler-Netzwerk

Netzwerk A · Hochschul-Intranet

  • 6 Poolrechner + 2 Altserver, Ubuntu 16.04
  • Java, jsoup für HTML, PDFBox/POI für Dokumente
  • TensorFlow Inception + Tesseract OCR für Bilder
  • Client-Cache gegen doppelte Links
Link holen / Ergebnis melden

Server

Netzwerk B · DMZ der Hochschule

  • Dell PowerEdge T300, Ubuntu 18.04
  • Java Socket-Server, Port 2156
  • MySQL: Tabellen Hosts, Links, Emails
  • FIFO-Vergabe des ältesten Links, Zeitstempel
Suchanfrage / Treffer

Web-Frontend

Apache Tomcat 9 · Port 8080

  • JSP + Servlet, Ajax-Requests mit XML-Antwort
  • Standardsuche, Bildersuche, Statistik
  • Ergebnisse: Titel, Link, 140-Zeichen-Snippet
  • Footer zeigt die Zahl bekannter Links (gecacht)

Freigeschaltete Ports: SSH 22022 und Web 8080 aus dem Internet, Crawler-Schnittstelle 2156 aus dem Intranet – jeder Port musste beim Netzwerkadministrator beantragt werden.

Zahlen & Fakten

55 Mio.

Bekannte Links

Stand März 2019, laut Footer der Suchmaske

20 Mio.

Datensätze im Testlauf

danach SSD-RAID 0 für MySQL nachgerüstet

8

Crawler-Rechner

6 Poolrechner + 2 ehemalige Hochschulserver

Dell PowerEdge T300

Server

Xeon X3363, 4 Kerne, 20 GB RAM

16

Repositories

Crawler-Varianten, Server, Bilderkennung, Web, API

102 Seiten

Umfang der Arbeit

6 Kapitel, 26 Abbildungen, 88 Quellen

Technik-Stack

Stand 2019/2020 – bewusst nicht modernisiert

Kern

Java 8MySQL 5.7Apache Tomcat 9JSP + ServletsJava SocketsAjax / XMLUbuntu 16.04 / 18.04jsoupc3p0

Analyse

TensorFlow 1.12 (Inception)Tess4J / Tesseract OCRApache PDFBoxApache POIMySQL Fulltext

Spätere Experimente

MPJ Express (HPC-Cluster-Crawler)Android-CrawlerRaspberry Pi AutoupdaterMaven + JPA.NET Core APIC#-Launcher

Der Prototyp in Aktion

Screenshots aus der Bachelorarbeit (Abbildungen 23–25)

Screenshot der ZyperSearch-Suchmaske 2019
Abb. 23: Die Suchmaske – Logo, Suchfeld, Filter und der Zähler bekannter Links.
Screenshot der Suchergebnisse für den Begriff cat
Abb. 24: Suchergebnisse für „cat“ – Titel in Blau, Link in Grün, die ersten 140 Zeichen als Beschreibung.
Screenshot der Bildersuche mit Katzenbildern
Abb. 25: Bildersuche für „cat“ – das neuronale Netz hat Katzenbilder erkannt, die Höhe wird auf 100 px vereinheitlicht.

Die Katzen sind geblieben: Aus der Bildersuche wurde Jahre später die Idee für CatCatch, unsere App für Streunerkatzen. cat-catch.de

Historie

Von der ersten Suchmaske bis zu dieser Seite

2018

Idee und erste Crawler

Start des Projekts neben dem Studium: Crawler-Clients in Java, Socket-Server und MySQL-Schema. Erste Testläufe im Hochschulnetz mit ausgemusterter Server-Hardware.

29.12.2018

Erste Suchmaske

Das Web-Frontend entsteht auf Tomcat: main.jsp mit Logo, Suchfeld und „Suchen!“-Button, dazu die Bildersuche.

01.2019 – 02.2019

Suchoptionen und Boolesche Suche

Filter für Webpages, PDF und Office, Suche per Enter-Taste, Boolesche Verknüpfung der Suchbegriffe.

11.03.2019

Abgabe der Bachelorarbeit

102 Seiten zu Information Retrieval, neuronalen Netzen und dem Prototyp. Am 28. März 2019 veröffentlicht die Hochschulbibliothek die Arbeit unter CC BY 4.0.

2026

zypersearch.de

Diese Projektseite geht online. Die Katzen aus der Bildersuche leben in CatCatch weiter.

Ehrliches Fazit

Was der Prototyp gezeigt hat – und was nicht

„Wie sich bei der Entwicklung des Prototypen gezeigt hat, ist es wichtig für eine gute Web-Suchmaschine, nicht nur einen der beiden Ansätze zu verfolgen, sondern eine Kombination aus beiden zu wählen.“

— Kapitel 6, Schlusswort
  1. 1

    Für die Suche nach Textphrasen reichen klassische Textanalyseverfahren weitgehend aus. Neuronale Netze bringen dort erst etwas, wenn Nutzungsdaten vorliegen, mit denen sich das Ranking personalisieren ließe.

  2. 2

    Bei der Bildersuche sind neuronale Netze nicht mehr wegzudenken: Gesucht wird nach dem Inhalt eines Bildes, und den erkennt nur das Netz. Titel und OCR-Text blieben trotzdem wichtig, weil das Inception-Modell nicht ausreichend auf Eigennamen trainiert war.

  3. 3

    Skalierung braucht Clustering und strikt gekapselte Module. Neue Links gehörten erst in eine temporäre Datenbank, die optimiert wird, bevor sie die Suchdatenbank ersetzt.

  4. 4

    Die Marktführer sind nicht ohne Grund so erfolgreich. Eine neue Suchmaschine könnte sich in Europa nur mit anderen Regeln behaupten: vollständig transparent, Open Source, werbefrei, spendenfinanziert und in Europa gehostet.

  5. 5

    Realistisch betrachtet wird keine neue Suchmaschine einen Marktführer vom Thron stoßen. Der Prototyp hat aber gezeigt, dass ein komplettes Retrieval-System mit Hochschulmitteln machbar ist.

Neugierig geworden?

Die komplette Arbeit gibt es zum Lesen und Herunterladen, die alte Suchmaske zum Ausprobieren.