Moteur de recherche de l’Université Sun Yat-sen
Yat-Search Engine est un moteur de recherche de texte efficace qui prend en charge le chargement de plusieurs fichiers, les requêtes précises, les requêtes floues et les requêtes d'expression régulière. Ce projet vise à fournir une solution de recherche de texte rapide et précise, avec des fonctions de stockage et de journalisation persistantes, et prend en charge l'interface chinoise.
Il convient de noter que la recherche en chinois ne peut être effectuée qu'avec l'option "Recherche floue" et qu'il doit y avoir un symbole "."
Ce projet est uniquement destiné à des fins d'apprentissage et de communication, veuillez ne pas l'utiliser à des fins commerciales. L'auteur original n'est pas responsable des conséquences découlant de l'utilisation de ce projet.
La version actuelle est encore en développement et certaines fonctionnalités ne sont peut-être pas encore entièrement implémentées. Les contributions et suggestions de code sont les bienvenues !
Le devoir majeur du cours "Structure des données et algorithmes" de l'École d'informatique de l'Université Sun Yat-sen au semestre d'automne 2024.
Version actuelle : 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
La table de hachage contient la requête v1.0.0
CustomHash
et utilisez unordered_map
dans TextSearchEngine
pour combiner la fonction de hachage afin d'optimiser les performances des requêtes.Lecture de fichiers v1.0.1
Prise en charge de plusieurs fichiers (terminé) v1.1.0
main.cpp
pour permettre aux utilisateurs de saisir plusieurs noms de fichiers, et le système chargera ces fichiers un par un pour l'indexation.Prise en charge des expressions régulières (terminé) v1.1.1
RegexSearch
, utilisez la bibliothèque C++ <regex>
pour implémenter la fonction de requête basée sur des expressions régulières et ajoutez les options correspondantes au menu principal.Requête précise (terminée) v1.1.2
exactQuery
, recherchez efficacement les mots-clés correspondants exactement via unordered_map
et affichez les résultats correspondants.Résultats de recherche visuels, tels que l'imitation de la façon dont le compilateur signale les erreurs (terminé) v1.2.0
^
pour marquer la position du mot-clé dans la phrase, similaire à l'indication d'erreur du compilateur, pour améliorer la lisibilité.Requête illimitée, bouton de sortie (terminé) v1.2.1
Nouvelle fonction de hachage (terminée) v1.3.1
CustomHash
existante et améliorez l'efficacité du traitement des conflits de hachage pour améliorer encore les performances des requêtes.Prise en charge du chinois (terminé) v1.4.0
Optimisation des performances et prétraitement (terminé) v1.3.1
Interface utilisateur (terminée) v1.2.2
Stockage persistant (terminé) v1.3.0
Fonction de journalisation, enregistrement de l'historique des requêtes, etc. (Terminé) v1.3.2
query_log.txt
pour permettre aux utilisateurs de visualiser l'historique et de déboguer.Prise en charge de la sortie chinoise (terminée) v1.4.0
La méthode de compilation passe de mingW à cmake (terminé) v1.4.0
Entrez tout pour ajouter tous les fichiers (terminé) v1.4.0
Veuillez vous assurer de l'exécuter dans un environnement Linux. Des caractères chinois tronqués peuvent apparaître dans un environnement Windows. Entrez le répertoire de travail et clonez le projet localement :
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
Assurez-vous d'avoir installé CMake et un compilateur compatible C++ 17, tel que g++
ou clang++
. Le fichier cmakelists.txt a été configuré avec des options de compilation. Exécutez simplement la commande suivante pour compiler le projet. Notez que le compilateur par défaut se trouve dans /usr/bin/g++
. Si vous devez utiliser d'autres compilateurs, veuillez modifier le fichier CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
Placez le fichier texte que vous souhaitez rechercher dans le dossier de texte source et assurez-vous que le fichier est enregistré au format .txt.
Démarrez le programme : après avoir exécuté le fichier exécutable, le programme affichera l'interface de bienvenue et vous invitera à appuyer sur Entrée pour continuer.
Charger le fichier : saisissez le fichier à charger en fonction des invites. Saisissez à chaque fois un nom de fichier (il doit se terminer par .txt) et saisissez done pour terminer la sélection du fichier.
Sélectionnez le type de requête :
Entrez 1 pour une requête précise.
Entrez 2 pour une requête floue.
Entrez 3 pour une requête d'expression régulière.
Entrez 4 pour quitter le programme.
Saisir le contenu de la requête : Selon le type de requête sélectionné, saisissez les mots-clés ou expressions régulières correspondants.
Afficher les résultats : les résultats de la requête afficheront les phrases correspondantes et leurs marqueurs d'emplacement.
Quitter le programme : sélectionnez l'option de sortie, le programme enregistrera l'index et enregistrera le journal avant de quitter.
Le journal des opérations de requête est enregistré dans le fichier query_log.txt. Les utilisateurs peuvent afficher les enregistrements de requêtes historiques et les journaux d'opérations via un éditeur de texte.
Les contributions et suggestions de code sont les bienvenues ! Veuillez soumettre une Pull Request ou nous faire part de vos commentaires dans Issues.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.