Mecanismo de pesquisa da Universidade Sun Yat-sen
Yat-Search Engine é um mecanismo de pesquisa de texto eficiente que suporta carregamento de vários arquivos, consulta precisa, consulta difusa e consulta de expressão regular. Este projeto visa fornecer uma solução de pesquisa de texto rápida e precisa, com armazenamento persistente e funções de registro, e suporta interface chinesa.
Ressalta-se que a busca em chinês só pode ser realizada através da opção “Pesquisa Fuzzy”, sendo necessário que haja um símbolo “.”
Este projeto é apenas para fins de aprendizagem e comunicação, por favor não o utilize para fins comerciais. O autor original não se responsabiliza por quaisquer consequências decorrentes do uso deste projeto.
A versão atual ainda está em desenvolvimento e alguns recursos podem não estar totalmente implementados ainda. Contribuições e sugestões de código são bem-vindas!
A tarefa principal do curso "Estrutura de Dados e Algoritmo" da Escola de Ciência da Computação da Universidade Sun Yat-sen no semestre de outono de 2024.
Versão atual: 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
A tabela hash contém a consulta v1.0.0
CustomHash
e use unordered_map
no TextSearchEngine
para combinar a função hash para otimizar o desempenho da consulta.Leitura de arquivo v1.0.1
Suporte a vários arquivos (concluído) v1.1.0
main.cpp
para permitir que os usuários insiram vários nomes de arquivo, e o sistema carregará esses arquivos um por um para indexação.Suporte a expressões regulares (concluído) v1.1.1
RegexSearch
, use a biblioteca C++ <regex>
para implementar a função de consulta baseada em expressões regulares e adicione opções correspondentes ao menu principal.Consulta precisa (concluída) v1.1.2
exactQuery
, encontre com eficiência palavras-chave de correspondência exata por meio de unordered_map
e exiba os resultados correspondentes.Resultados de pesquisa visual, como imitar a forma como o compilador relata erros (concluído) v1.2.0
^
para marcar a posição da palavra-chave na frase, semelhante à indicação de erro do compilador, para melhorar a legibilidade.Consulta ilimitada, botão de saída (concluído) v1.2.1
Nova função hash (concluída) v1.3.1
CustomHash
existente e melhore a eficiência do processamento de conflitos de hash para melhorar ainda mais o desempenho da consulta.Suporte chinês (concluído) v1.4.0
Otimização de desempenho e pré-processamento (concluído) v1.3.1
Interface do usuário (concluída) v1.2.2
Armazenamento persistente (concluído) v1.3.0
Função de log, registro de histórico de consultas, etc. (Concluído) v1.3.2
query_log.txt
para facilitar aos usuários a visualização do histórico e a depuração.Suporte à saída chinesa (concluída) v1.4.0
O método de compilação foi alterado de mingW para cmake (concluído) v1.4.0
Digite tudo para adicionar todos os arquivos (concluído) v1.4.0
Certifique-se de executá-lo em um ambiente Linux. Caracteres chineses distorcidos podem ocorrer em um ambiente Windows. Entre no diretório de trabalho e clone o projeto localmente:
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
Certifique-se de ter o CMake e um compilador compatível com C++17 instalados, como g++
ou clang++
. O arquivo cmakelists.txt foi configurado com opções de compilação. Basta executar o seguinte comando para compilar o projeto. Observe que o compilador padrão está localizado em /usr/bin/g++
. Se você precisar usar outros compiladores, modifique o arquivo CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
Coloque o arquivo de texto que deseja pesquisar na pasta do texto de origem e certifique-se de que o arquivo esteja salvo no formato .txt.
Inicie o programa: Após executar o arquivo executável, o programa exibirá a interface de boas-vindas e solicitará que você pressione Enter para continuar.
Carregar arquivo: Insira o arquivo a ser carregado de acordo com as instruções. Insira um nome de arquivo a cada vez (deve terminar com .txt) e digite concluído para concluir a seleção do arquivo.
Selecione o tipo de consulta:
Digite 1 para uma consulta precisa.
Insira 2 para consulta difusa.
Insira 3 para uma consulta de expressão regular.
Digite 4 para sair do programa.
Insira o conteúdo da consulta: De acordo com o tipo de consulta selecionado, insira as palavras-chave ou expressões regulares correspondentes.
Veja os resultados: os resultados da consulta exibirão frases correspondentes e seus marcadores de localização.
Sair do programa: Selecione a opção de saída, o programa salvará o índice e registrará o log antes de sair.
O log de operações de consulta é salvo no arquivo query_log.txt Os usuários podem visualizar registros históricos de consultas e logs de operações por meio de um editor de texto.
Contribuições e sugestões de código são bem-vindas! Envie uma solicitação pull ou dê-nos seus comentários em Problemas.
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo LICENSE para obter detalhes.