Suchmaschine der Sun Yat-sen-Universität
Yat-Search Engine ist eine effiziente Textsuchmaschine, die das Laden mehrerer Dateien, präzise Abfragen, Fuzzy-Abfragen und Abfragen mit regulären Ausdrücken unterstützt. Dieses Projekt zielt darauf ab, eine schnelle und genaue Textsuchlösung mit dauerhaften Speicher- und Protokollierungsfunktionen bereitzustellen und die chinesische Schnittstelle zu unterstützen.
Es ist zu beachten, dass die chinesische Suche nur über die Option „Fuzzy Search“ abgeschlossen werden kann und am Ende ein „.“ stehen muss.
Dieses Projekt dient ausschließlich Lern- und Kommunikationszwecken. Bitte nutzen Sie es nicht für kommerzielle Zwecke. Der ursprüngliche Autor übernimmt keine Verantwortung für etwaige Folgen, die sich aus der Nutzung dieses Projekts ergeben.
Die aktuelle Version befindet sich noch in der Entwicklung und einige Funktionen sind möglicherweise noch nicht vollständig implementiert. Code-Beiträge und Vorschläge sind willkommen!
Die Hauptaufgabe für den Kurs „Datenstruktur und Algorithmus“ der Fakultät für Informatik der Sun Yat-sen-Universität im Herbstsemester 2024.
Aktuelle Version: v1.4.0
└──Yat-Search-Engine
├── CMakeLists.txt
├── LICENSE
├── dat
│ └── index.dat
├── include
│ ├── RegexSearch.h
│ └── TextSearchEngine.h
├── log
│ └── query_log.txt
├── logo_pic
│ ├── logo.txt
│ └── logo_out.txt
├── readme.md
├── source-text
│ ├── bible.txt
│ ├── text1.txt
│ ├── text2.txt
│ └── otherfile...
└── src
├── RegexSearch.cpp
├── TextSearchEngine.cpp
└── main.cpp
Die Hash-Tabelle enthält die Abfrage v1.0.0
CustomHash
und verwenden Sie unordered_map
in TextSearchEngine
um die Hash-Funktion zu kombinieren und die Abfrageleistung zu optimieren.Datei lesen v1.0.1
Unterstützung mehrerer Dateien (abgeschlossen) v1.1.0
main.cpp
, um Benutzern die Eingabe mehrerer Dateinamen zu ermöglichen, und das System lädt diese Dateien einzeln zur Indizierung.Unterstützung regulärer Ausdrücke (abgeschlossen) v1.1.1
RegexSearch
Klasse hinzu, verwenden Sie die C++ <regex>
-Bibliothek, um die Abfragefunktion basierend auf regulären Ausdrücken zu implementieren, und fügen Sie dem Hauptmenü entsprechende Optionen hinzu.Präzise Abfrage (abgeschlossen) v1.1.2
exactQuery
, finden Sie mithilfe von unordered_map
effizient exakt passende Schlüsselwörter und zeigen Sie die passenden Ergebnisse an.Visuelle Suchergebnisse, z. B. Nachahmung der Art und Weise, wie der Compiler Fehler meldet (abgeschlossen) v1.2.0
^
um die Position des Schlüsselworts im Satz zu markieren, ähnlich der Fehleranzeige des Compilers, um die Lesbarkeit zu verbessern.Unbegrenzte Abfrage, Exit-Button (abgeschlossen) v1.2.1
Neue Hash-Funktion (abgeschlossen) v1.3.1
CustomHash
-Funktion und verbessern Sie die Effizienz der Hash-Konfliktverarbeitung, um die Abfrageleistung weiter zu verbessern.Unterstützt Chinesisch (abgeschlossen) v1.4.0
Leistungsoptimierung und Vorverarbeitung (abgeschlossen) v1.3.1
Benutzeroberfläche (abgeschlossen) v1.2.2
Persistenter Speicher (abgeschlossen) v1.3.0
Protokollfunktion, Abfrageverlauf aufzeichnen usw. (abgeschlossen) v1.3.2
query_log.txt
aufgezeichnet, um Benutzern das Anzeigen des Verlaufs und das Debuggen zu erleichtern.Unterstützt die chinesische Ausgabe (abgeschlossen) v1.4.0
Die Kompilierungsmethode wurde von mingW auf cmake (abgeschlossen) v1.4.0 geändert
Geben Sie „all“ ein, um alle Dateien hinzuzufügen (abgeschlossen) v1.4.0
Bitte stellen Sie sicher, dass Sie es in einer Linux-Umgebung ausführen. In einer Windows-Umgebung können verstümmelte chinesische Zeichen auftreten. Geben Sie das Arbeitsverzeichnis ein und klonen Sie das Projekt lokal:
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
Stellen Sie sicher, dass CMake und ein C++17-fähiger Compiler installiert sind, z. B. g++
oder clang++
. Die Datei cmakelists.txt wurde mit Kompilierungsoptionen konfiguriert. Führen Sie einfach den folgenden Befehl aus, um das Projekt zu kompilieren. Beachten Sie, dass sich der Standard-Compiler in /usr/bin/g++
befindet. Wenn Sie andere Compiler verwenden müssen, ändern Sie bitte die Datei CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
Platzieren Sie die Textdatei, die Sie durchsuchen möchten, im Quelltextordner und stellen Sie sicher, dass die Datei im TXT-Format gespeichert ist.
Starten Sie das Programm: Nach dem Ausführen der ausführbaren Datei zeigt das Programm die Willkommensoberfläche an und fordert Sie auf, die Eingabetaste zu drücken, um fortzufahren.
Datei laden: Geben Sie die zu ladende Datei entsprechend den Eingabeaufforderungen ein (dieser muss mit .txt enden) und geben Sie „done“ ein, um die Dateiauswahl abzuschließen.
Abfragetyp auswählen:
Geben Sie 1 für eine genaue Abfrage ein.
Geben Sie 2 für Fuzzy-Abfrage ein.
Geben Sie 3 für eine Abfrage mit regulären Ausdrücken ein.
Geben Sie 4 ein, um das Programm zu beenden.
Abfrageinhalt eingeben: Geben Sie je nach ausgewähltem Abfragetyp die entsprechenden Schlüsselwörter oder regulären Ausdrücke ein.
Ergebnisse anzeigen: In den Abfrageergebnissen werden übereinstimmende Sätze und ihre Positionsmarkierungen angezeigt.
Beenden Sie das Programm: Wählen Sie die Option „Beenden“. Das Programm speichert den Index und zeichnet das Protokoll auf, bevor es beendet wird.
Das Abfragevorgangsprotokoll wird in der Datei query_log.txt gespeichert. Benutzer können historische Abfragedatensätze und Vorgangsprotokolle über einen Texteditor anzeigen.
Code-Beiträge und Vorschläge sind willkommen! Bitte reichen Sie eine Pull-Anfrage ein oder geben Sie uns Ihr Feedback unter „Probleme“.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Einzelheiten finden Sie in der LICENSE-Datei.