提示
如果您對本專案的運作和實施有任何疑問,或對本專案有更好的最佳化建議,可以直接聯絡我,或在倉庫留下issue。
本專案是一個基於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
[!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
)。安裝自製程序:
/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
中設定。
日誌部分還可以進一步完善。