Conseil
Si vous avez des questions sur le fonctionnement et la mise en œuvre de ce projet, ou si vous avez de meilleures suggestions d'optimisation pour ce projet, vous pouvez me contacter directement ou laisser un problème dans le référentiel.
Ce projet est une implémentation de moteur de recherche basée sur la bibliothèque Boost, visant à fournir un système de recherche efficace et précis spécifiquement pour la recherche de documents Boost. En détaillant le processus de création d'un moteur de recherche, du prétraitement des données à la création d'index, en passant par le traitement des requêtes de recherche et la présentation des résultats, ce projet montre comment créer un système de moteur de recherche complet. La pile technologique couvre C++, la bibliothèque Boost, Html, CSS et JavaScript, réalisant la construction d'index back-end et l'interaction des utilisateurs front-end. Les fonctions de base du projet sont complètes et des fonctionnalités avancées telles que les statistiques de fréquence des mots, les index mis à jour dynamiquement et le tri par priorité des résultats de recherche ont été ajoutées, ce qui améliore considérablement l'efficacité et la précision de la recherche. Cela rend le moteur de recherche particulièrement adapté aux développeurs pour trouver rapidement les documents techniques dont ils ont besoin lorsqu'ils utilisent les bibliothèques Boost, améliorant ainsi considérablement l'efficacité du développement et l'accessibilité des documents.
La recherche d'un grand nombre de documents et du contenu qu'ils contiennent est évidemment un comportement très long et laborieux. Si vous les parcourez directement et y accédez un par un, le service ne répondra pratiquement pas pendant longtemps. Pour cette raison, un moyen plus rapide et plus pratique est nécessaire pour planifier et gérer une grande quantité de données afin d’obtenir une recherche rapide. La création d'un index est au cœur de la résolution de ce problème.
Ce qu'on appelle l'index consiste à attacher une étiquette au document et à effectuer une recherche rapide en fonction de l'étiquette. La gestion des étiquettes est beaucoup moins stressante que la gestion des documents, qui est la raison essentielle de la construction d'un index.
La bibliothèque Boost est un terme général désignant certaines bibliothèques C++ qui fournissent des extensions à la bibliothèque standard du langage C++. Il est développé et maintenu par la communauté Boost. La bibliothèque Boost peut fonctionner parfaitement avec la bibliothèque standard C++ et lui fournir des fonctions étendues. Le site Boost propose un grand nombre de documents. La mise en œuvre d'un moteur de recherche peut nous aider à trouver les documents dont nous avons besoin avec précision et rapidité dans un grand nombre de documents.
Backend : C/C+, C++11, STL, Boost, Jsoncpp, cppjieba, cpp-httplib
Front-end : html5, css, js, jQuery, Ajax
Effet:
Effets back-end :
Étant donné que le projet n'implémente pas de services d'exploration, la méthode de téléchargement des données sur l'ordinateur local est adoptée ici. Le fichier ou répertoire HTML de données peut être placé dans le répertoire suivant.
Les étapes spécifiques peuvent être trouvées sur : word.md-chapter
boost-search-engine/search-engine/data/input
[!NOTE] L'environnement que j'utilise est :
Linux ubuntu-linux-22-04-desktop 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:46 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
Installez CMake :
Installez Visual Studio :
Installez la bibliothèque Boost :
C:Librariesboost_1_75_0
cd C:Librariesboost_1_75_0
.bootstrap.bat
.b2.exe
BOOST_ROOT
sur le répertoire dans lequel Boost est installé.Installez jsoncpp :
vcpkg install jsoncpp
Configurez le projet CMake :
BOOST_ROOT
).Installez Homebrew :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Installez CMake et les bibliothèques dépendantes :
brew install cmake boost jsoncpp
Configurez le projet CMake :
mkdir build && cd build
cmake ..
make
Linux (Ubuntu, CentOS)
sudo apt-get update
sudo apt-get install cmake g++ libboost-all-dev libjsoncpp-dev
sudo yum install cmake gcc-c++ boost-devel jsoncpp-devel
Configurez le projet CMake :
mkdir build && cd build
cmake ..
make
Vous pouvez également utiliser makefile
pour compiler directement :
make
[!CONSEIL]
- Assurez-vous que les chemins sont correctement définis sur toutes les plates-formes, en particulier sous Windows, où vous devrez peut-être définir manuellement les chemins d'accès à certaines bibliothèques.
- Pour différentes distributions Linux, les commandes d'installation et les packages disponibles peuvent être légèrement différents, alors ajustez-les en conséquence.
- Lors de la création sur Windows avec Visual Studio, assurez-vous de sélectionner la bonne architecture (x86 ou x64) pour correspondre à la version de la bibliothèque.
Liens officiels :
https://github.com/yanyiwu/cppjieba
Liez le répertoire cppjieba
au répertoire du projet boost-search-engine/search-engine/include
.
Entrez dans le répertoire cppjieba
Liez le composant de bibliothèque de dictionnaire dict
et le composant limonp
dans cppjieba
.
Analysez les données.
./parser
Comme le montre la figure, l’opération est réussie. Si l'opération échoue, vous pouvez vérifier le message d'erreur. Il se peut que la configuration du chemin soit incorrecte. Vous pouvez configurer vous-même le chemin dans le code.
Démarrez le service :
Comme le montre la figure, le démarrage est réussi.
Bien entendu, d'autres méthodes peuvent également être utilisées pour déployer sur le service d'arrière-plan, telles que :
nohup ./server > log/log.txt 2>&1 &
Vous pouvez également utiliser d'autres méthodes, telles que tmux, etc.
Utilisez un navigateur pour accéder au numéro de port 8081 de l'IP. Le numéro de port est défini dans ./src/server.cc
.
La partie journal peut être encore améliorée.