ヒント
このプロジェクトの運用と実装について質問がある場合、またはこのプロジェクトのより良い最適化提案がある場合は、私に直接連絡するか、リポジトリに問題を残してください。
このプロジェクトは、Boost ライブラリに基づいた検索エンジンの実装であり、Boost ドキュメントの検索に特化した効率的で正確な検索システムを提供することを目的としています。このプロジェクトでは、データの前処理からインデックスの作成、検索クエリの処理と結果の表示に至るまで、検索エンジンの構築プロセスを詳しく説明することで、完全な検索エンジン システムを構築する方法を示します。テクノロジー スタックは C++、Boost ライブラリ、Html、CSS、JavaScript をカバーし、バックエンドのインデックス構築とフロントエンドのユーザー インタラクションを実現します。プロジェクトの基本機能は包括的であり、単語頻度統計、動的に更新されるインデックス、検索結果の優先順位ソートなどの高度な機能が追加され、検索の効率と精度が大幅に向上します。これにより、この検索エンジンは開発者が Boost ライブラリを使用する際に必要な技術文書を迅速に見つけるのに特に適しており、開発効率と文書へのアクセシビリティが大幅に向上します。
大量のドキュメントとドキュメントに含まれるコンテンツを検索することは、明らかに非常に時間と労力を要する作業です。 1つずつ直接横断してアクセスすると、基本的にサービスは長時間応答しません。このため、高速検索を実現するには、大量のデータを計画および管理するための、より高速で便利な方法が必要です。インデックスの構築は、この問題を解決するための核心です。
いわゆるインデックスとは、文書にラベルを付け、そのラベルに基づいて素早く検索することです。ラベルの管理はドキュメントの管理よりもはるかにストレスが少なく、これがインデックスを構築する重要な理由です。
Boost ライブラリは、C++ 言語の標準ライブラリに拡張機能を提供するいくつかの C++ ライブラリの総称です。これは Boost コミュニティによって開発および保守されています。 Boost ライブラリは C++ 標準ライブラリと完全に連携し、その拡張機能を提供します。 boost の Web サイトでは、多数のドキュメントを提供しています。検索エンジンを導入すると、大量の文書の中から必要な文書を正確かつ迅速に見つけることができます。
バックエンド: 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
[!NOTE] 私が使用する環境は次のとおりです:
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 をインストールします。
Boost ライブラリをインストールします。
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
)。Homebrew をインストールします。
/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
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
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
に設定されます。
ログ部分はさらに改善することができます。