Seit gestern spiele ich mit verteilten Suchmaschinen rum – wovon es ja einige gibt. Hängengeblieben bin ich dann bei YaCy, einer in Java implementierten Lösung.
Interessant bei diesem Ansatz ist die komplette Loslösung von einer zentralen Infrastruktur, das Netzwerk funktioniert ähnlich wie ein gutes P2P-Netz komplett ohne feste Knoten. Dabei läuft auf jedem ans Netz angeschlossenen Rechner ein Crawler (sozusagen ein *sehr* ausdauernder User, der sich durch das Internet klickert) und ein Indexer, der die Suchkataloge erstellt.
Über einen eingebauten HTTP-Server können nun diese erstellten Suchkataloge im Netzwerk verteilt werden, jeder hinzukommende Knoten wirft in den Gesamtpool seine Suchergebnisse mit rein – je mehr mitmachen, desto größer wird der Gesamtsuchindex. Auf jedem der angeschlossenen Knoten kann dann eine Suchanfrage abgesetzt werden (sieht dann auch nicht viel anders aus als eine Google-Maske – hiermit wird ein zufälliger Yacy-Knoten aufgerufen) und die Ergebnisliste wird aus der verteilten Datenbank zusammengesucht.
Zusätzlich zu dem geläufigen Webcrawler-Prinzip kann die Applikation auch als Proxy arbeiten, jede angesurfte Seite wird dann automatisch indiziert und dem Suchpool hinzugefügt – die Privatsphäre wird dadurch gewährleistet, dass keine Seiten genutzt werden, die entweder einen Cookie senden oder per POST-Befehl aufgerufen werden, beides Anzeichen dafür, dass eine Benutzeridentifikation stattfand – Post aus gmail o.ä. sollte ja nicht unbedingt in einer Suchmaschine auftauchen…
Die Indexerstellung über einen Proxy hat den Charme, dass viel genutzte Webseiten auch sehr häufig indiziert werden, somit ist die Wahrscheinlichkeit für eine sehr aktuelle Trefferliste höher als bei anderen Suchmaschinen – wobei natürlich die jetzt gerade im Moment durchsuchbare Seitenzahl in den Datenbanken mit kaum 500 Mio Links nicht sehr beeindruckend ist, Google wird mit der geringen Anzahl an Nutzern kaum eingeholt werden, aber als Ziel ist es natürlich da ;) [eine andere verteilte Suchmaschine namens Majestic12 hat da ein sehr nettes Emoticon: Klick]