Übermäßig einfache Suchmaschine - Suchmaschinen einfach machen?
Aussprache: "oh-see"
Nur zum Spaß! Ich wollte wirklich Rost lernen und war zu der Zeit wirklich daran interessiert, wie Suchmaschinen funktionierten. Es gab also keine bessere Möglichkeit, beide Ziele zu erreichen als mit diesem Projekt!
Dieses Repository ist ein Monorepo, das von den unabhängigen Komponenten gebildet wird, die die OSSE -Suchmaschine bilden.
$ nix develop
Installieren Sie Fracht und Koffer mit Ihrer bevorzugten Methode (z. B. Ihrem bevorzugten Paketmanager).
$ cargo run --bin crawler
$ cargo run --bin indexer
$ trunk serve frontend/index.html --open
Sobald alle Komponenten ausgeführt werden, können Sie in Ihrem bevorzugten Webbrowser zu 127.0.0.1:8080 navigieren und mit OSSE beginnen!
Die OSSE -Suchmaschine ist in drei unabhängige Komponenten unterteilt:
Diese Komponente liefert sowohl die Implementierung des tatsächlichen Suchmaschinenindexer als auch die REST -API, mit der indizierte Ressourcen gesucht und hinzugefügt werden. Es verwendet Actix Web für die Rest -API (ausgeführt auf Port 4444). Für die Implementierung der tatsächlichen Indexer -Datenstruktur verwenden wir derzeit einen sehr einfachen Reverse -Index, der mit einem HashMap implementiert ist, sodass alle indizierten Ressourcen bei jeder Neustart des Indexers derzeit verloren gehen.
Diese Komponente ist ein einfacher rekursiver Crawler, der den krabbierten RAW -HTML an den Indexer weiterleitet. Es verwendet REQWEST, um eine vordefinierte Liste von Root -Websites abzurufen und sie mit Schaber zu analysieren, den Website -Inhalt an den Indexer zu senden und alle seine Links zu extrahieren, wodurch sie zu einer Warteschlange von Websites hinzugefügt werden soll, die krabbelt werden sollen. Dieser Vorgang wird auf unbestimmte Zeit "rekursiv" wiederholt.
Diese Komponente ist eine einfache Webschnittstelle zum Indexer. Es ermöglicht Benutzern, Ergebnisse auf benutzerfreundliche Weise zu durchsuchen und zu visualisieren. Es ist derzeit mit Yew gebaut, sodass wir das Frontend in Rost schreiben und ein "blasend schnelles" -Sm-basierter Web-UI erstellen können.
"Wenn Sie Ideen oder Patches haben, zögern Sie bitte nicht, zum OSSE beizutragen!"
Diese Software ist unter der BSD-2-Klausel © Baitinq lizenziert.