Ein Peer-to-Peer-Suchmaschinensystem
Dieses Projekt ist eine Implementierung als Bibliothek des Kamilata -Protokolls. Kamilata ermöglicht eine vertrauenslose Suche in offenen Netzwerken. Diese Bibliothek kann jede Art von Daten verarbeiten und einfach in Ihre LIBP2P -Anwendung integriert werden.
Mehrere Anwendungsfälle sind möglich:
Der Ranking -Algorithmus liegt bei Ihnen, da diese Bibliothek Ihnen nur einen Strom von ungeordneten Suchergebnissen liefert. Basierend auf Metadaten, die Sie in diese Ergebnisse aufnehmen, können Sie sie so einweisen, wie Sie möchten.
Kamilata ist das erste System der Welt, das die oben beschriebenen Eigenschaften anbietet und gleichzeitig skalierbar ist. In der Tat kann das Netzwerk ohne Probleme mehr als Hunderte von Millionen Dokumenten und Hunderttausende von Knoten einbeziehen. Die tatsächliche Grenze ist unbekannt.
Diese Bibliothek betreibt die Admarus IPFS -Suchmaschine.
Alles beginnt mit dem naivsten Ansatz, den ich bis zum Maximum optimiert habe. Stellen Sie sich ein Netzwerk von Kollegen vor, die jeweils Dokumente speichern (diese Dokumente können auf mehreren Kollegen repliziert werden, wenn sie beliebt sind). Wenn ein Peer nach einem Dokument suchen möchte, sendet er eine Abfrage an jeden Peer im Netzwerk. Dies funktioniert nicht mehr, wenn es zu viele Kollegen gibt, da das Netzwerk mit Abfragen überflutet ist.
Um dies zu lösen, habe ich einen Routing -Algorithmus hinzugefügt, mit dem der Suchende Abfragen nur an die Kollegen mit passenden Dokumenten weiterleiten kann. Dank dessen überspringen Fragen alle nutzlosen Kollegen. Jetzt können Sie unabhängig von der Abfrage eine Liste mit passenden Dokumenten mit konstanter Geschwindigkeit herunterladen. Die Suchgeschwindigkeit hängt von der Größe des Netzwerks ab. Neue Ergebnisse werden alle h -Hopfen erhalten, wobei h = ln(n)/ln(c) mit n der Anzahl der Kollegen und c der Anzahl der Verbindungen, die jeder Peer zu anderen hat,. Dies ist sehr gut, da h mehr als 3, wenn c 100 ist, das Netzwerk mehr als eine Million Kollegen haben muss. Die Ergebnisse können dann auf der Grundlage der von ihnen enthaltenen Metadaten frei eingestuft werden.
Der Kamilata -Routing -Algorithmus basiert auf abgeschwächten Blütenfiltern. BLOOM -Filter sind kompakte Datenstrukturen, mit denen festgestellt wird, ob ein Element in einem Satz vorhanden ist. Hier überprüfen wir das Vorhandensein von Wörtern in Dokumenten. Aus Sicht eines Knotens ist ein Kamilata -Netzwerk in virtuelle Knotengruppen unterschiedlicher Größen unterteilt. Dies unterteilt den Korpus in mehrere Sätze, die von einigen Dokumenten bis hin zu allen Dokumenten des Korpus reichen. Bei jedem entsprechenden Blütefilter ist es einfach, Wörter im Netzwerk zu lokalisieren und zu wissen, welche Knoten für bestimmte Wörter abfragen sollen.