BoostCompass —— 搜索引擎

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: BoostCompass —— 搜索引擎

一、项目简介

BoostCompass 是一款基于 Boost 文档的站内搜索引擎。用户只需输入查询关键词,即可快速检索到相关的 Boost 在线文档,并提供相关网页链接,为用户提供了便捷的检索服务。

首先,我们对离线版本的 HTML 文档进行解析,并将解析结果整理为一个行文本文件。然后,读取并处理好的文本文件,进行分词、权重计算等操作,同时在内存中构建正排索引和倒排索引。接下来,对用户查询词进行分词和触发,根据相关度对结果进行排序。最后,将结果以 JSON 格式进行包装,并序列化为字符串返回。所有这些功能通过 HTTP 服务器搭载搜索页面,为外部用户提供服务。

二、Boost库简介

🔴 Boost官网链接

1. 简介

Boost 是一个由C++社区开发和维护的开源库集合,它提供了许多功能强大且高质量的 C++ 库,可以扩展 C++ 标准库的功能。Boost 库包含了许多与 C++ 标准库相似的组件,同时还提供了一些独特的功能和工具,比如 Boost.Asio 用于网络编程、Boost.Thread 用于线程操作、Boost.Filesystem 用于文件系统操作等等。

Boost 库的目标是通过提供高质量、可移植、且兼容标准的 C++ 库来增强 C++ 的功能和性能。它的发展历史可以追溯到 1998 年,是一个长期积累和发展的项目。由于 Boost 的质量和广泛使用,很多 Boost 库最终被纳入了 C++ 标准库,比如智能指针、函数对象、元编程库等。

2. Boost 库的特点

  1. 高质量:Boost 库经过严格的测试和审核,确保了高质量的代码和可靠的功能。
  2. 可移植性:Boost 库可以在各种平台上使用,包括 Windows、Linux、Mac 等,为 C++ 程序的跨平台开发提供了便利。
  3. 兼容性:Boost 库与 C++ 标准库兼容,并且遵循 C++ 的最佳实践,可以与现有的 C++ 代码很好地集成和使用。
  4. 功能丰富:Boost 库涵盖了很多领域,包括但不限于网络编程、多线程、文件系统、智能指针、正则表达式、容器和算法等,为 C++ 开发者提供了丰富的工具和组件。总的来说,Boost 库是 C++ 社区中非常重要的一个开源项目,为 C++ 程序员提供了丰富的工具和功能,有助于提高代码的质量、可移植性和性能。

三、项目主要模块

1. 网页内容获取,数据预处理模块

这个模块代码的主要思路是从指定目录中枚举所有HTML文件,解析出每个文件的标题、内容和URL,并将这些信息以特定的格式保存到一个文本文件中。我们首先使用boost::filesystem库递归遍历目录,收集所有HTML文件的路径,然后逐个读取文件内容,通过自定义的解析函数提取所需信息。解析出的文档数据随后被写入到一个输出文件中,使用特定分隔符来区分不同文档的记录。我们在执行过程中进行了详尽的错误检查和处理,确保了其健壮性。

2. 建立正排索引和倒排索引,项目核心模块

这个模块我们定义了一个名为Index的C++类,用于构建和维护一个文档索引系统。该系统采用单例模式确保只有一个索引实例,并使用正排索引和倒排索引来快速检索文档。正排索引存储了文档的基本信息,如标题、内容和URL,而倒排索引则根据关键词将文档分组。类中提供了构建索引、获取文档信息和获取倒排列表的方法。构建索引的过程涉及读取处理过的数据文件,解析文档数据,并根据文档内容构建索引。此外,我们还实现了简单的进度显示功能。整个索引系统的构建旨在提高文档检索的效率和准确性。

3. 编写 http_server 模块,进行网络开放

这个模块是一个基于C++的简单搜索引擎服务程序,我们整合了HTTP服务器和搜索功能。我们首先初始化一个搜索器对象,使用预先处理好的文档数据(来自第一个模块)来建立索引。然后,我们设置了一个HTTP服务器,并为服务器定义了一个GET请求的处理函数,该函数响应客户端对"/s"路径的访问。

当客户端发送包含搜索关键字的请求时,服务器会验证请求中是否包含关键字参数。如果没有关键字,服务器会返回错误信息。如果有关键字,服务器将调用搜索器的搜索方法,传入关键字,并获取搜索结果,这些结果被封装为JSON字符串返回给客户端。

服务器在启动时会记录一条日志信息,指示服务器已成功启动,并开始监听所有IP地址的8081端口上的请求。

四、项目功能预览

1. 项目文件预览

上面的图片包含了最后所用到的文件,这些文件包含了最后所使用的文档和资源,想要具体了解的可以点击后面的传送门:🔴 项目代码URL传送

2. 项目执行步骤

  1. 在控制台输入make命令,会生成三个可执行文件parserdebughttp_server如下图所示
  2. 运行parser文件,在控制台输入./parser命令
  3. 运行http_server文件,在控制台输入./http_server命令,效果如下图所示

⭕执行时间大概六分钟左右进度会到达100%

  1. 打开任意浏览器, 在网址搜索栏搜索URL:[主机IP]:8081 如下图所示

  2. 在搜索框里面搜索Boost库内的关键词,如下图我们搜索Boost organization得到的结果

五、总结

目前我们仅进行了基础的介绍,涵盖了一些基本的使用方法。接下来,我将逐步更新更详细的内容,包括代码解释和更深入的功能介绍。敬请期待!


目录
相关文章
|
4月前
|
监控 安全 JavaScript
DVWA CSP Bypass 通关解析
DVWA CSP Bypass 通关解析
|
4月前
|
SQL 监控 安全
DVWA Authorisation Bypass 通关解析
DVWA Authorisation Bypass 通关解析
|
6月前
|
安全 Apache PHP
文件上传--Upload-labs--Pass09(在某些版本里是Pass10)--点+空格+点 绕过
文件上传--Upload-labs--Pass09(在某些版本里是Pass10)--点+空格+点 绕过
|
XML 缓存 前端开发
apache网址优化
apache网址优化
60 0
|
缓存 Linux Windows
certutil工具使用和bypass学习
certutil工具使用和bypass学习
750 0
|
开发者 Python
Pass 关键字的使用 | 学习笔记
快速学习 Pass 关键字的使用
SS搭建
很多教程在这里或其他平台都无法访问,所以以后有关这些东西会在github上更新,大家可以在我的github上查看https://github.com/HarryHq/ffa
1701 0
|
自然语言处理 Java 数据库连接