Informationen über die Suchmaschine FriedaBot
FriedaBot ist eine einfache, kleine, werbefreie und C02-neutrale deutsche Suchmaschine im Internet mit dem Ziel, die Privatsphäre der Anwender zu schützen.
Darauf können Sie sich verlassen:
- FriedaBot speichert, sammelt oder teilt keine Ihrer persönlichen Daten.
- FriedaBot verfolgt Sie nicht mit Werbeanzeigen.
- FriedaBot speichert Ihren Suchverlauf nicht.
- FriedaBot liefert ausschließlich Suchergebnisse zurück, die die eigenen Webcrawler gesammelt und indexiert haben, d.h. es erfolgen keine Zugriffe auf fremde Suchmaschinen.
- Die Webcrawler von FriedaBot halten sich sowohl an die Suchvorgaben von robots.txt als auch an die Metadaten der Webseite.
- FriedaBot behandelt http- und https-Seiten gleich.
- FriedaBot durchsucht aus Performancegründen derzeit nur die Domains .de, .at, .ch, .com, .org, .nrw, .ruhr, .wien, .koeln, .berlin, .bayern, .hamburg, .cologne und .saarland.
- FriedaBot indexiert nur deutsch- oder englischsprachige Seiten.
- FriedaBot ignoriert Wörter ohne Bezug. In der Regel sind das die ersten 100 meistverwendeten Wörter (Wikipedia).
- FriedaBot prüft alle Webseiten auf Änderungen und aktualisiert ggf. den Datenbestand alle 60 Tage.
- FriedaBot veröffentlicht die Anzahl der Suchanfragen auf der Statistikseite: statistic.php.
- FriedaBot ist im laufenden Betrieb eine rein rechnerisch CO2-neutrale Suchmaschine, d.h. der Jahresenergiebedarf aller Server zusammen ist geringer als die Jahresleistung der installierten Photovoltaikanlage.
- Die Server von FriedaBot befinden sich in Deutschland in Nordrhein-Westfalen.
Die Webcrawler von FriedaBot
Die Webcrawler von FriedaBot suchen und indexieren automatisch öffentliche Webseiten im World Wide Web.
Sie folgen dabei den Links, die in den analysierten Webseiten gefunden werden. Somit können nur Webseiten für die Suchmaschine indexiert werden, die auch über Links erreichbar sind.
Die Ausganswebseiten von FriedaBot sind Seiten von Wikipedia.
Die Endung "Bot" im Namen FriedaBot ist ein Synonym dafür, dass es sich bei Webcrawlern um Bot-Computerprogramme handelt, die weitgehend automatisch laufen.
FriedaBot setzt drei unterschiedliche Arten von Webcrawlern ein.
Webcrawler-Standard
Der Webrawler-Standart von FriedaBot durchsucht das World Wide Web nach neuen Webseiten. Er erweitert somit ständig den Datenbestand der Suchmaschine.
Webcrawler-Update
Der Webrawler-Update von FriedaBot aktualisert den Datenbestand der Suchmaschine. Dabei werden alle 60 Tage bereits indexierte Webseiten nach Änderungen durchsucht. Webseiten, die sich über einen längeren Zeitraum nicht ändern, werden seltener geprüft.
Webcrawler-News
Der Webrawler-News von FriedaBot durchsucht vordefinierte Webseiten von Online-Magazinen, Tageszeitungen, Radio- und Fernsehsendern sowie weiteren regionalen Nachrichtenargenturen nach aktuellen Meldungen.
Die Webseiten werden zyklisch alle zwei Stunden aktualisiert. Nach maximal drei Tagen werden die Meldungen wieder aus der Datenbank entfernt.
Die Server von FriedaBot
Zur Optimierung des Energiebedarfs setzt FriedaBot für Studienzwecke unterschiedliche Server mit sehr geringer Leistungsaufnahme ein.
Gerade der Raspberry Pi4 mit 8GB RAM scheint hier eine Alternative zu sein. Mit einem 64-bit Server-Betriebssystem lässt sich der gesamte Speicher auch für die Datenbank nutzen. So kann beispielsweise ein Raspberry Pi4 mit 8GB RAM alle Haupt- bzw. Stichwörter der deutsch- und englischsprachigen Wikipedia im Hauptspeicher halten, um bei einer Suche schnell auf diese Wörter zugreifen zu können.
Es werden die folgenden Server eingesetzt:
NAS-Server
Die NAS-Server dienen der globalen Datenhaltung.
Raspberry Pi Linux-Server
Alle Webcrawler laufen verteilt auf unterschiedlichen Raspberry Pis. Zusätzlich beschleunigen sie Suchanfragen von Stichwörtern über kleine Datenbanken im RAM.
Odroid-Server
Auf einem Odroid-Server läuft der Wetterbericht.
Windows 10
Auf Rechnern mit dem Betriebssystem Windows 10 erfolgt die gesamte Entwicklung, Überwachung und Wartung der Programme und der Datenbanken. Als 24/7 Betriebssystem ist es aber gänzlich ungeeignet, da dieses Betriebssystem unkoordiniert Bootvorgänge durchführt.
Programmiersprachen von FriedaBot
FriedaBot setzt unterschiedliche Programmier- und Websprachen ein.
C++
C++ ist eine sehr effiziente maschinennahe Programmiersprache die es erlaubt, die maximale Performance einer Applikation zu erreichen. Daher wird sie auch zur Systemprogrammierung von Betriebssystemen und effizienten Bibliotheken eingesetzt.
Die Webcrawler von FriedaBot sind in C++ programmiert um eine maximale Effizient im indexieren von Webseiten zu erreichen. Jeder Webcrawler besteht dabei aus vielen parallelen arbeitenden asynchronen Threads. Das sind:
- Linkverwaltung:
Die Linkverwaltung ist der übergeordnete Prozess, der den Links folgt und den URL-Reader die zu untersuchende Webseite mitteilt.
- URL-Reader:
Der URL-Reader liest den Inhalt einer Webseite.
Weil das Lesen von Webseiten teilweise auch über eine Sekunde dauern kann, werden mehrere parallele URL-Reader eingesetzt, um den Leseprozess zu verkürzen.
- Html-Parser:
Der Html-Parser indexiert den Inhalt der Webseite nach Wörtern, Wortgruppen und Bildern.
- Index-Writer:
Der Index-Writer schreibt die Indexe des Parsers in die Datenbank
- Image-Writer:
Der Image-Writer schreibt die Links der Bilder in die Datenbank. Die Bilder selbst werden weder gelesen noch kopiert.
Die Webcrawler sind so optimiert, dass das Schreiben in die Datenbank der limitierende Prozess ist.
SQL
Sql ist die standardisierte Programmiersprache der Datenbanken. Mit ihr werden die Daten von den Webcrawlern in die entsprechenden Tabellen der Datenbank geschrieben. Aber auch für das Verarbeiten einer Suchanfrage wird SQL verwendet.
HTML
HTML ist die textbasierte Auszeichnungssprache der Webseiten. Der URL-Parser des Webcrawlers muss die Syntax kennen, um den Inhalt korrekt indexieren zu können. Natürlich müssen auch die Webseiten von friedabot.de in HTML erstellt sein.
CSS
CSS ist die Stylesheet-Sprache der HTML-Seiten. Mit ihr werden die Webseiten in ihrem Erscheinungsbild gestaltet.
JavaScript
JavaScript ist eine Skriptsprache für dynamische HTML-Seiten. FriedaBot wertet die JavaScript-Inhalte beim Parsen von Webseiten nicht aus. JavaScript wird nur für die Interaktion der Webseiten von friedabot.de eingesetzt.
PHP
PHP ist eine serverseitige Skriptsprache zur Erstellung dynamischer HTML-Seiten. Die Webseiten von FriedaBot sind alle mit PHP erzeugt worden. Mit PHP werden auch die parallelen asynchronen Datenbankabfragen zu mehreren Servern realisiert, um die Suche zu beschleunigen.
Suchoptimierung von FriedaBot
Die Qualität einer Suchmaschine hängt nicht nur vom Datenbestand der indexierten Webseiten ab, sondern auch von der Antwortzeit einer Suchanfrage. Das Problem besteht nun darin, dass die Festplatten nur eine geringe Lesegeschwindigkeit mit sich bringen. Selbst im RAID-Verbund oder SSD-Platten können das Problem nicht signifikant verbessern. So dauert beispielsweise die Suche eines Wortes in einer indexierten Worttabelle mit einem TByte Daten schon über 10 Sekunden. Dennoch gibt es Möglichkeiten und Tricks die Suchergebnisse in einen für den Anwender akzeptablen Bereich zu bringen.
Mehrere Server
Die einfachste, aber auch kostenintensivste Möglichkeit zur Verbesserung der Zugriffszeit besteht in der Verwendung mehrerer Datenbankserver. Die Zugriffszeit verringert sich nahezu linear mit der Anzahl der Server, d.h. zwei Server halbieren die Zugriffszeit, wenn auch deren Datenbestand halbiert ist.
Schlagwortsuche
Schlag- oder auch Hautwörter haben die höchste Priorität einer Suchanfrage. Diese Wörter oder Wortgruppen machen jedoch nur 5% des gesamten Datenbestandes aus. Damit kann auch die Antwortzeit einer Suchanfrage deutlich reduziert werden, wenn auch die Schlagworte in der Datenbank separat behandelt werden. Die Schlagwortsuche erfolgt über ein Raspberry Pi-Cluster, in der die Suchanfragen parallel abgearbeitet werden.
Memory-Tabellen und Datenbank-Cache
Auf Daten, die sich im Hauptspeicher der Datenbank befinden, kann hundert Mal schneller zugegriffen werden, als auf Daten einer Festplatte. Große marktführende Suchmaschinen haben tausende Datenbankserver, die alle Daten im Hauptspeicher halten können. Alternativ und kostengünstiger kann man mit gezielten Memory-Tabellen für Schlagworte oder für bereits durchgeführten Suchanfragen im Datenbank-Cache die Zugriffszeit deutlich reduzieren. Die Schlagwortsuche im Raspberry Pi-Cluster erfolgt ausschließlich über Daten, die sich im Hauptspeicher befinden.
Hintergrundprozesse
Längere Suchanfragen mit Antwortzeiten von über 10 Sekunden müssen dem Benutzer verborgen bleiben. Das kann dadurch erreicht werden, indem während der ersten Suchanfrage im Hintergrund die komplexe und längere Suchanfrage läuft und als Antwort zunächst die Schlag- oder Hauptwörter als Ergebnis geliefert werden.
Redundante Datenbanken
Die ständig laufenden Webcrawler belasten natürlich die Datenbanken. Suchanfragen können daher länger dauern, wenn bestimmte Tabellen durch Schreibvorgänge vom Webcrawler gesperrt sind. Um dieses Problem zu umgehen, werden redundaten Datenbanken verwendet, um die Suche zu beschleunigen.
Kontakt:
info@friedabot.de