팁
이 프로젝트의 운영 및 구현에 대해 질문이 있거나 이 프로젝트에 대한 더 나은 최적화 제안이 있는 경우 저에게 직접 연락하거나 저장소에 문제를 남겨둘 수 있습니다.
이 프로젝트는 특히 Boost 문서 검색을 위한 효율적이고 정확한 검색 시스템을 제공하는 것을 목표로 하는 Boost 라이브러리를 기반으로 한 검색 엔진 구현입니다. 이 프로젝트는 데이터 전처리부터 인덱스 생성, 검색어 처리 및 결과 표시에 이르기까지 검색 엔진 구축 프로세스를 자세히 설명함으로써 완전한 검색 엔진 시스템을 구축하는 방법을 보여줍니다. 기술 스택은 C++, Boost 라이브러리, Html, CSS 및 JavaScript를 다루며 백엔드 인덱스 구성 및 프런트엔드 사용자 상호 작용을 실현합니다. 프로젝트의 기본 기능은 포괄적이며, 단어 빈도 통계, 동적으로 업데이트되는 색인, 검색 결과 우선 순위 정렬 등의 고급 기능이 추가되어 검색 효율성과 정확성이 크게 향상되었습니다. 따라서 검색 엔진은 개발자가 Boost 라이브러리를 사용할 때 필요한 기술 문서를 신속하게 찾는 데 특히 적합하여 개발 효율성과 문서 접근성이 크게 향상됩니다.
수많은 문서와 그 문서에 포함된 내용을 검색하는 것은 분명 시간이 많이 걸리고 노동집약적인 행위입니다. 직접 트래버스해서 하나씩 접속하게 되면 기본적으로 서비스가 오랫동안 응답하지 않게 됩니다. 이러한 이유로, 빠른 검색을 위해서는 대량의 데이터를 계획하고 관리할 수 있는 보다 빠르고 편리한 방법이 필요합니다. 인덱스 구축은 이 문제를 해결하는 핵심이다.
소위 색인이란 문서에 라벨을 붙이고, 라벨을 기준으로 빠르게 검색하는 것입니다. 라벨을 관리하는 것은 문서를 관리하는 것보다 스트레스가 훨씬 적습니다. 이것이 인덱스 구축의 핵심 이유입니다.
Boost 라이브러리는 C++ 언어 표준 라이브러리에 대한 확장을 제공하는 일부 C++ 라이브러리에 대한 일반적인 용어입니다. Boost 커뮤니티에서 개발하고 유지 관리합니다. Boost 라이브러리는 C++ 표준 라이브러리와 완벽하게 작동하고 이에 대한 확장 기능을 제공할 수 있습니다. Boost 웹사이트는 많은 수의 문서를 제공합니다. 검색 엔진을 구현하면 수많은 문서에서 필요한 문서를 정확하고 빠르게 찾는 데 도움이 될 수 있습니다.
백엔드: C/C+, C++11, STL, Boost, Jsoncpp, cppjieba, cpp-httplib
프런트엔드: html5, css, js, jQuery, Ajax
효과:
백엔드 효과:
이 프로젝트는 크롤러 서비스를 구현하지 않기 때문에 여기서는 로컬 컴퓨터에 데이터를 다운로드하는 방법을 채택했습니다. 데이터 HTML 파일 또는 디렉토리는 다음 디렉토리에 배치될 수 있습니다.
구체적인 단계는 word.md-chapter에서 확인할 수 있습니다.
boost-search-engine/search-engine/data/input
내가 사용하는 환경은 다음과 같습니다.
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
CMake를 설치합니다:
Visual Studio를 설치합니다.
부스트 라이브러리를 설치합니다:
C:Librariesboost_1_75_0
과 같은 디렉터리에 압축을 푼다. cd C:Librariesboost_1_75_0
.bootstrap.bat
.b2.exe
BOOST_ROOT
Boost가 설치된 디렉터리로 설정하도록 환경 변수를 설정합니다.jsoncpp를 설치합니다:
vcpkg install jsoncpp
CMake 프로젝트를 구성합니다.
BOOST_ROOT
).홈브류를 설치합니다:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
CMake 및 종속 라이브러리를 설치합니다.
brew install cmake boost jsoncpp
CMake 프로젝트를 구성합니다.
mkdir build && cd build
cmake ..
make
리눅스(우분투, 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
CMake 프로젝트를 구성합니다.
mkdir build && cd build
cmake ..
make
makefile
사용하여 직접 컴파일할 수도 있습니다.
make
[!팁]
- 모든 플랫폼, 특히 일부 라이브러리에 대한 경로를 수동으로 설정해야 할 수 있는 Windows에서 경로가 올바르게 설정되었는지 확인하십시오.
- Linux 배포판에 따라 설치 명령과 사용 가능한 패키지가 약간 다를 수 있으므로 그에 맞게 조정하세요.
- Visual Studio를 사용하여 Windows에서 빌드하는 경우 라이브러리 버전과 일치하는 올바른 아키텍처(x86 또는 x64)를 선택해야 합니다.
공식 링크:
https://github.com/yanyiwu/cppjieba
cppjieba
디렉터리를 프로젝트 boost-search-engine/search-engine/include
디렉터리에 연결합니다.
cppjieba
디렉토리를 입력하세요
dict
사전 라이브러리 구성 요소와 limonp
구성 요소를 cppjieba
에 연결합니다.
데이터를 구문 분석합니다.
./parser
그림과 같이 작업이 성공적으로 완료되었습니다. 작업이 실패하면 오류 메시지를 확인할 수 있습니다. 경로 구성이 잘못되었을 수 있습니다. 코드에서 경로를 직접 구성할 수 있습니다.
서비스를 시작합니다:
그림과 같이 시동이 성공적으로 이루어졌습니다.
물론 다음과 같은 다른 방법을 사용하여 백그라운드 서비스에 배포할 수도 있습니다.
nohup ./server > log/log.txt 2>&1 &
tmux 등의 다른 방법을 사용할 수도 있습니다.
브라우저를 사용하여 IP의 8081 포트 번호에 액세스하십시오. 포트 번호는 ./src/server.cc
에 설정됩니다.
로그 부분은 더욱 개선될 수 있습니다.