Hound ist eine extrem schnelle Quellcode -Suchmaschine. Der Kern basiert auf diesem Artikel (und Code) von Russ Cox: Regelmäßiger Ausdruck, der mit einem Trigram -Index übereinstimmt. Hound selbst ist ein statisches React -Frontend, das zu einem Go -Backend spricht. Das Backend führt einen aktuellen Index für jedes Repository und beantwortet die Suche über eine minimale API. Hier ist es in Aktion:

Installieren Sie GO (Mindestversion erforderlich: 1.16) und NPM
Klonen Sie das Repository und führen Sie es aus.
git clone https://github.com/hound-search/hound.git
cd hound
make
Die resultierenden Binärdateien ( hound , houndd ) finden Sie im .build/ bin/ verzeichnis.
{
"dbpath" : " db " ,
"repos" : {
"Hound" : {
"url" : " https://github.com/hound-search/hound.git " ,
"vcs-config" : {
"ref" : " main "
}
}
}
}Eine vollständige Liste der verfügbaren Konfigurationsoptionen finden Sie hier.
houndd im selben Verzeichnis wie Ihre config.json aus. Sie sollten eine ähnliche Ausgabe sehen wie: 2015/03/13 09:07:42 Searcher started for statsd
2015/03/13 09:07:42 Searcher started for Hound
2015/03/13 09:07:42 All indexes built!
2015/03/13 09:07:42 running server at http://localhost:6080
Installieren Sie Docker, wenn Sie es nicht haben. Wir brauchen mindestens Docker >= 1.14 .
Erstellen Sie eine config.json -Datei und verwenden Sie sie, um Ihre Repositories aufzulisten. Schauen Sie sich unser Beispiel für config.json an, um zu sehen, wie verschiedene Arten von Repositories eingerichtet werden. Zum Beispiel können wir Hound so konfigurieren, dass er seinen eigenen Quellcode unter Verwendung der Konfiguration in Standard-config.json durchsucht.
docker run -d -p 6080:6080 --name hound -v $(pwd):/data ghcr.io/hound-search/hound:latest
Sie sollten in der Lage sein, zu http: // localhost: 6080/wie gewohnt zu navigieren.
git clone https://github.com/hound-search/hound.git
cd hound
docker build . --tag=hound
docker create -p 6080:6080 --name hound -v $(pwd):/data hound
docker start hound
docker stop hound
Es gibt keine speziellen Flaggen, die in der Produktion Hunde laufen können. Sie können das Flag --addr=:6880 verwenden, um den Port zu steuern, an den der Server bindet. Derzeit unterstützt Hound TLS nicht, da die meisten Benutzer Hound einfach hinter Apache oder Nginx ausführen. Wir sind jedoch offen für Beiträge, um TLS -Unterstützung hinzuzufügen.
Wir haben in der Vergangenheit viele ähnliche Tools verwendet, und die meisten von ihnen sind entweder zu langsam, zu schwer zu konfigurieren oder benötigen zu viel Software, um sie zu installieren. Was bringt uns zu ...
Ja, das war's. Sie können Anforderungen an den GO -Dienst über Apache/Nginx/etc., aber das ist nicht erforderlich.
Derzeit wird Hound nur auf MacOS und CentOs getestet, sollte jedoch auf jedem *Nix -System funktionieren. Hound unter Windows wird nicht unterstützt, aber wir haben gehört, dass es gut kompiliert und ausgeführt wird (obwohl es hilft, Ihren Datenordner von Windows Search Indexer auszuschließen).
Hound unterstützt die folgenden Versionskontrollsysteme:
"vcs" : "hg" in der Konfiguration"vcs" : "svn" in der Konfiguration"vcs" : "bzr" in der Konfiguration"vcs" : "local" in der KonfigurationBeispiele für die Verwendung jedes VCS finden Sie unter config-example.json.
Es gibt einige Möglichkeiten, um private Repositories zu indexieren:
local Pseudo-VCS-Treiber. Auf diese Weise können Sie ein lokales Verzeichnis indexieren. Sie können "watch-changes" : true um einen rekursiven Hash aller Dateien im Verzeichnis zu berechnen und automatisch neu zu indeminieren.file:// Protokoll. Auf diese Weise können Sie einen lokalen Klon eines Repositorys indexieren. Der Nachteil hier ist, dass die Umfrage, um das Repo auf dem neuesten Stand zu halten, nicht funktionieren wird. (Dies funktioniert auch nicht auf lokalen Ordnern, die kein unterstütztes Repository -Typ sind.) Wenn Sie Docker verwenden, müssen Sie ein Volumen an Ihrem Repository (z. B. -v $(pwd)/src:/src ) montieren und den relativen Pfad zum Repo in Ihrer Konfiguration verwenden."url" : "[email protected]:foo/bar.git" . Solange Sie Ihre SSH -Tasten auf dem Box einrichten, in dem Hound ausgeführt wird, funktioniert dies. Standardmäßig befragt Hound die URL in der Konfiguration für Aktualisierungen alle 30 Sekunden. Sie können diesen Wert überschreiben, indem Sie den ms-between-poll -Schlüssel pro Repo in der Konfiguration einstellen. Wenn Sie eine große Anzahl von Repositorys indizieren, sind Sie möglicherweise auch daran interessiert, die Eigenschaft max-concurrent-indexers zu optimieren. Sie können sehen, wie diese in der Beispielkonfiguration funktionieren.
Derzeit haben die folgenden Redakteure Plugins, die Hound unterstützen:
git clone https://github.com/hound-search/hound.git
cd hound
make
Die Hound Executables werden in .build/bin erhältlich sein.
In jedem der Pakete im Hound gibt es immer mehr Tests. Bitte stellen Sie sicher, dass diese vor dem Hochladen Ihrer Pull -Anfrage bestehen. Sie können die Tests mit dem folgenden Befehl ausführen. Um die gesamte Testsuite auszuführen, verwenden Sie:
make test
Wenn Sie einfach die JavaScript -Testsuite ausführen möchten, verwenden Sie:
npm test
Alle GO -Dateien, die in _test.go enden, wird als Testdateien angenommen. In ähnlicher Weise werden alle JavaScript -Dateien, die in .test.js endet, automatisch von Scherz, unserem Testläufer, ausgeführt. Tests sollten neben den Dateien leben, die sie abdecken. Weitere Informationen zum Schreiben von Scherztests finden Sie in den Dokumenten von Jest und finden Sie in den Tests von Go GO für weitere Details zum Test -GO -Code.
Sie müssen Node.js >= 12 installieren und jest mit npm install jest installieren, um die JS -Tests auszuführen.
Hound enthält eine Web -Benutzeroberfläche, die aus mehreren Dateien besteht (HTML, CSS, JavaScript usw.). Um UI -Änderungen zu kompilieren, verwenden Sie die Verwendung:
make ui
Um die Entwicklung zu erleichtern, gibt es ein Flag, das die Dateien aus dem Dateisystem liest (so dass der beliebte Bearbeitungs-/Aktualisierungszyklus ermöglicht wird).
Zuerst sollten Sie sicherstellen, dass Sie alle Abhängigkeiten installiert haben, die Sie benötigen, indem Sie ausgeführt werden:
make dev
Führen Sie dann den Houndserver mit der Option -Dev aus:
.build/bin/houndd --dev
Erstellt bei Etsy von:
Hound wird aufrechterhalten von: