提示
如果您对本项目的运行和实施有任何疑问,或者对本项目有更好的优化建议,可以直接联系我,或者在仓库留下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
中设置。
日志部分还可以进一步完善。