Sun Yat-sen University의 검색 엔진
Yat-Search Engine은 다중 파일 로딩, 정확한 쿼리, 퍼지 쿼리 및 정규식 쿼리를 지원하는 효율적인 텍스트 검색 엔진입니다. 이 프로젝트는 지속적인 저장 및 로깅 기능을 갖춘 빠르고 정확한 텍스트 검색 솔루션을 제공하는 것을 목표로 하며 중국어 인터페이스를 지원합니다.
중국어 검색은 "퍼지 검색" 옵션을 통해서만 완료할 수 있으며 끝에 "." 기호가 있어야 한다는 점에 유의하세요.
본 프로젝트는 학습 및 소통의 목적으로만 제작되었으며, 상업적인 목적으로 사용하지 마십시오. 본 프로젝트의 이용으로 인해 발생하는 어떠한 결과에 대해서도 원저작자는 책임을 지지 않습니다.
현재 버전은 아직 개발 중이므로 일부 기능이 아직 완전히 구현되지 않았을 수 있습니다. 코드 기여와 제안을 환영합니다!
2024년 가을학기 쑨원대학교 컴퓨터공학부 "데이터 구조 및 알고리즘" 과목의 주요 과제입니다.
현재 버전: 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
해시 테이블에는 쿼리 v1.0.0이 포함되어 있습니다 .
CustomHash
를 구현하고 TextSearchEngine
에서 unordered_map
사용하여 해시 함수를 결합하여 쿼리 성능을 최적화합니다.파일 읽기 v1.0.1
다중 파일 지원 (완료) v1.1.0
main.cpp
수정하면 시스템은 이러한 파일을 하나씩 로드하여 인덱싱합니다.정규식 지원 (완료) v1.1.1
RegexSearch
클래스를 추가하고, C++ <regex>
라이브러리를 사용해 정규식 기반 쿼리 기능을 구현하고, 해당 옵션을 메인 메뉴에 추가합니다.정밀쿼리 (완료) v1.1.2
exactQuery
메소드를 구현하고, unordered_map
통해 정확히 일치하는 키워드를 효율적으로 찾아 일치하는 결과를 표시합니다.컴파일러가 오류를 보고하는 방식을 모방하는 등 검색 결과를 시각화합니다 (완료) v1.2.0
^
기호를 사용하여 문장 내 키워드 위치를 컴파일러의 오류 표시와 유사하게 표시하여 가독성을 높였습니다.쿼리 무제한, 종료버튼 (완료) v1.2.1
새로운 해시 함수 (완료) v1.3.1
CustomHash
기능을 최적화하고 해시 충돌 처리 효율성을 향상시켜 쿼리 성능을 더욱 향상시킵니다.중국어 (완성) v1.4.0 지원
성능 최적화 및 전처리 (완료) v1.3.1
사용자 인터페이스 (완료) v1.2.2
영구저장 (완료) v1.3.0
로그 기능, 쿼리 기록 기록 등 (완료) v1.3.2
query_log.txt
에 기록되어 사용자가 이력 기록을 보고 디버그할 수 있도록 합니다.중국어 출력 지원 (완료) v1.4.0
컴파일 방법이 mingW에서 cmake (완료) v1.4.0으로 변경되었습니다.
모든 파일을 추가하려면 모두 입력 (완료) v1.4.0
반드시 Linux 환경에서 실행하시기 바랍니다. Windows 환경에서는 중국어 깨짐 현상이 발생할 수 있습니다. 작업 디렉터리를 입력하고 프로젝트를 로컬로 복제합니다.
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
CMake와 C++17 지원 컴파일러(예: g++
또는 clang++
가 설치되어 있는지 확인하세요. cmakelists.txt 파일은 이미 컴파일 옵션으로 구성되어 있습니다. 다음 명령을 실행하여 프로젝트를 컴파일하세요. 기본 컴파일러는 /usr/bin/g++
에 있습니다. 다른 컴파일러를 사용해야 하는 경우 CMakeLists.txt 파일을 수정하세요.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
검색하려는 텍스트 파일을 소스 텍스트 폴더에 넣고 파일이 .txt 형식으로 저장되었는지 확인하세요.
프로그램 시작: 실행 파일을 실행한 후 프로그램은 환영 인터페이스를 표시하고 계속하려면 Enter를 누르라는 메시지를 표시합니다.
파일 로드: 프롬프트에 따라 로드할 파일을 입력하고, 매번 파일 이름을 입력하고(.txt로 끝나야 함), done을 입력하여 파일 선택을 완료합니다.
쿼리 유형 선택:
정확한 쿼리를 위해서는 1을 입력하세요.
퍼지 쿼리의 경우 2를 입력합니다.
정규식 쿼리의 경우 3을 입력합니다.
프로그램을 종료하려면 4를 입력합니다.
쿼리 내용 입력: 선택한 쿼리 유형에 따라 해당 키워드 또는 정규식을 입력합니다.
결과 보기: 쿼리 결과에는 일치하는 문장과 위치 표시가 표시됩니다.
프로그램 종료: 종료 옵션을 선택하면 프로그램이 종료되기 전에 색인을 저장하고 로그를 기록합니다.
쿼리 작업 로그는 query_log.txt 파일에 저장되며, 사용자는 텍스트 편집기를 통해 쿼리 기록 및 작업 로그를 볼 수 있습니다.
코드 기여와 제안을 환영합니다! Pull Request를 제출하거나 Issues에서 피드백을 보내주세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.