Motor de búsqueda de la Universidad Sun Yat-sen
Yat-Search Engine es un motor de búsqueda de texto eficiente que admite la carga de múltiples archivos, consultas precisas, consultas difusas y consultas de expresiones regulares. Este proyecto tiene como objetivo proporcionar una solución de búsqueda de texto rápida y precisa, con funciones de almacenamiento y registro persistentes y compatible con la interfaz china.
Cabe señalar que la búsqueda en chino solo se puede completar mediante la opción "Búsqueda difusa" y debe haber un símbolo "."
Este proyecto es solo para fines de aprendizaje y comunicación, no lo utilice con fines comerciales. El autor original no es responsable de las consecuencias que surjan del uso de este proyecto.
La versión actual aún está en desarrollo y es posible que algunas funciones aún no se hayan implementado por completo. ¡Las contribuciones y sugerencias de código son bienvenidas!
La tarea principal para el curso "Estructura de datos y algoritmo" de la Facultad de Ciencias de la Computación de la Universidad Sun Yat-sen en el semestre de otoño de 2024.
Versión actual: 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 tabla hash contiene la consulta v1.0.0
CustomHash
y use unordered_map
en TextSearchEngine
para combinar la función hash para optimizar el rendimiento de la consulta.Lectura de archivos v1.0.1
Soporte para múltiples archivos (completado) v1.1.0
main.cpp
para permitir a los usuarios ingresar varios nombres de archivos y el sistema cargará estos archivos uno por uno para indexarlos.Soporte de expresiones regulares (completado) v1.1.1
RegexSearch
, use la biblioteca C ++ <regex>
para implementar la función de consulta basada en expresiones regulares y agregue las opciones correspondientes al menú principal.Consulta precisa (completada) v1.1.2
exactQuery
, encuentre de manera eficiente palabras clave que coincidan exactamente a través de unordered_map
y muestre los resultados coincidentes.Resultados de búsqueda visuales, como imitar la forma en que el compilador informa errores (completado) v1.2.0
^
para marcar la posición de la palabra clave en la oración, similar a la indicación de error del compilador, para mejorar la legibilidad.Consulta ilimitada, botón de salida (completado) v1.2.1
Nueva función hash (completada) v1.3.1
CustomHash
existente y mejore la eficiencia del procesamiento de conflictos hash para mejorar aún más el rendimiento de las consultas.Soporte chino (completado) v1.4.0
Optimización del rendimiento y preprocesamiento (completado) v1.3.1
Interfaz de usuario (completada) v1.2.2
Almacenamiento persistente (completado) v1.3.0
Función de registro, registro del historial de consultas, etc. (Completado) v1.3.2
query_log.txt
para facilitar a los usuarios ver el historial y depurar.Admite salida china (completada) v1.4.0
El método de compilación se cambia de mingW a cmake (completado) v1.4.0
Ingrese todo para agregar todos los archivos (completado) v1.4.0
Asegúrese de ejecutarlo en un entorno Linux. Es posible que aparezcan caracteres chinos confusos en un entorno Windows. Ingrese al directorio de trabajo y clone el proyecto localmente:
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
Asegúrese de tener instalado CMake y un compilador compatible con C++ 17, como g++
o clang++
. El archivo cmakelists.txt se ha configurado con opciones de compilación. Simplemente ejecute el siguiente comando para compilar el proyecto. Tenga en cuenta que el compilador predeterminado se encuentra en /usr/bin/g++
. Si necesita utilizar otros compiladores, modifique el archivo CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
Coloque el archivo de texto que desea buscar en la carpeta de texto fuente y asegúrese de que el archivo esté guardado en formato .txt.
Inicie el programa: después de ejecutar el archivo ejecutable, el programa mostrará la interfaz de bienvenida y le pedirá que presione Entrar para continuar.
Cargar archivo: ingrese el archivo que se cargará de acuerdo con las indicaciones. Ingrese un nombre de archivo cada vez (debe terminar con .txt) e ingrese listo para completar la selección del archivo.
Seleccione tipo de consulta:
Ingrese 1 para una consulta precisa.
Ingrese 2 para consulta difusa.
Introduzca 3 para una consulta de expresión regular.
Ingrese 4 para salir del programa.
Ingrese el contenido de la consulta: según el tipo de consulta seleccionado, ingrese las palabras clave o expresiones regulares correspondientes.
Ver los resultados: los resultados de la consulta mostrarán oraciones coincidentes y sus marcadores de ubicación.
Salga del programa: seleccione la opción de salida, el programa guardará el índice y registrará el registro antes de salir.
El registro de operaciones de consulta se guarda en el archivo query_log.txt. Los usuarios pueden ver registros históricos de consultas y registros de operaciones a través de un editor de texto.
¡Las contribuciones y sugerencias de código son bienvenidas! Envíe una solicitud de extracción o envíenos sus comentarios en Problemas.
Este proyecto está bajo la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.