Consejo
Si tiene alguna pregunta sobre el funcionamiento y la implementación de este proyecto, o si tiene mejores sugerencias de optimización para este proyecto, puede contactarme directamente o dejar un problema en el repositorio.
Este proyecto es una implementación de motor de búsqueda basada en la biblioteca Boost, cuyo objetivo es proporcionar un sistema de búsqueda eficiente y preciso específicamente para buscar documentos de Boost. Al profundizar en el proceso de creación de un motor de búsqueda, desde el preprocesamiento de datos hasta la creación de índices, el procesamiento de consultas de búsqueda y la presentación de resultados, este proyecto muestra cómo construir un sistema de motor de búsqueda completo. La pila de tecnología cubre C++, la biblioteca Boost, Html, CSS y JavaScript, logrando la construcción de índices de back-end y la interacción del usuario de front-end. Las funciones básicas del proyecto son completas y se han agregado funciones avanzadas como estadísticas de frecuencia de palabras, índices actualizados dinámicamente y clasificación por prioridad de resultados de búsqueda, lo que mejora significativamente la eficiencia y precisión de la búsqueda. Esto hace que el motor de búsqueda sea especialmente adecuado para que los desarrolladores encuentren rápidamente los documentos técnicos que necesitan cuando utilizan las bibliotecas Boost, lo que mejora en gran medida la eficiencia del desarrollo y la accesibilidad a los documentos.
La búsqueda de una gran cantidad de documentos y el contenido de los documentos es obviamente un comportamiento que requiere mucho tiempo y trabajo. Si los atraviesa y accede directamente uno por uno, el servicio básicamente no responderá durante mucho tiempo. Por este motivo, se necesita una forma más rápida y cómoda de planificar y gestionar una gran cantidad de datos para lograr una búsqueda rápida. La creación de un índice es el núcleo de la solución de este problema.
El llamado índice consiste en adjuntar una etiqueta al documento y buscar rápidamente según la etiqueta. Administrar etiquetas es mucho menos estresante que administrar documentos, que es la razón esencial para crear un índice.
Biblioteca Boost es un término general para algunas bibliotecas de C++ que proporcionan extensiones a la biblioteca estándar del lenguaje C++. Es desarrollado y mantenido por la comunidad Boost. La biblioteca Boost puede funcionar perfectamente con la biblioteca estándar C++ y proporcionarle funciones ampliadas. El sitio web de boost proporciona una gran cantidad de documentos. Implementar un motor de búsqueda puede ayudarnos a encontrar los documentos que necesitamos de forma precisa y rápida entre una gran cantidad de documentos.
Servidor: C/C+, C++11, STL, Boost, Jsoncpp, cppjieba, cpp-httplib
Interfaz: html5, css, js, jQuery, Ajax
Efecto:
Efectos de fondo:
Dado que el proyecto no implementa servicios de rastreo, aquí se adopta el método de descargar datos a la computadora local. El archivo o directorio HTML de datos se puede colocar en el siguiente directorio.
Los pasos específicos se pueden encontrar en: word.md-chapter
boost-search-engine/search-engine/data/input
[!NOTE] El entorno que uso es:
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
Instalar CMake:
Instalar Visual Studio:
Instalar la biblioteca Boost:
C:Librariesboost_1_75_0
cd C:Librariesboost_1_75_0
.bootstrap.bat
.b2.exe
BOOST_ROOT
en el directorio donde está instalado Boost.Instalar jsoncpp:
vcpkg install jsoncpp
Configurar el proyecto CMake:
BOOST_ROOT
).Instalar cerveza casera:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Instale CMake y las bibliotecas dependientes:
brew install cmake boost jsoncpp
Configurar el proyecto 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
Configurar el proyecto CMake:
mkdir build && cd build
cmake ..
make
También puedes usar makefile
para compilar directamente:
make
[!CONSEJO]
- Asegúrese de que las rutas estén configuradas correctamente en todas las plataformas, especialmente en Windows, donde es posible que deba configurar manualmente las rutas a algunas bibliotecas.
- Para diferentes distribuciones de Linux, los comandos de instalación y los paquetes disponibles pueden ser ligeramente diferentes, así que ajústelos en consecuencia.
- Al compilar en Windows con Visual Studio, asegúrese de seleccionar la arquitectura correcta (x86 o x64) para que coincida con la versión de la biblioteca.
Enlaces oficiales:
https://github.com/yanyiwu/cppjieba
Vincule el directorio cppjieba
al directorio boost-search-engine/search-engine/include
del proyecto.
Ingrese al directorio cppjieba
Vincule el componente de la biblioteca del diccionario dict
y el componente limonp
en cppjieba
.
Analiza los datos.
./parser
Como se muestra en la figura, la operación fue exitosa. Si la operación falla, puede consultar el mensaje de error. Puede ser que la configuración de la ruta sea incorrecta. Puede configurar la ruta usted mismo en el código.
Iniciar el servicio:
Como se muestra en la figura, el inicio fue exitoso.
Por supuesto, también se pueden utilizar otros métodos para implementar en el servicio en segundo plano, como:
nohup ./server > log/log.txt 2>&1 &
También puedes utilizar otros métodos, como tmux, etc.
Utilice un navegador para acceder al número de puerto 8081 de la IP. El número de puerto se establece en ./src/server.cc
.
La parte del tronco se puede mejorar aún más.