[C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...

article/2025/9/9 15:07:52

|cover


项目背景

Boost库是C++中一个非常重要的开源库. 它实现了许多C++标准库中没有涉及的特性和功能, 一度成为了C++标准库的拓展库. C++新标准的内容, 很大一部分脱胎于Boost库中.

Boost库的高质量代码 以及 提供了更多实用方便的C++组件, 使得Boost库在C++开发中会被高频使用

为方便开发者学习使用, Boost库官网(boost.org)也提供了不同版本库组件的相关介绍文档, 但是Boost库的官网在相当长一段时间都是没有站内搜索的. 应该是近两个月左右才 实现了站内搜索 的功能:

但是, Boost库官网实现的站内搜索是全局的搜索, 很多时候大部分开发者只需要查看某个组件的文档用以学习.

此时 使用Boost官方提供的站内搜索也是很不方便的, 而且也不支持选择版本来获取相关文档:

所以就有了本项目的出现, Boost库指定版本提供文档的站内搜索

搜索引擎相关宏观原理

我们每个人一定都使用过搜索引擎, 一般人常用的一定有: Bing、百度、Google…

使用搜索引擎搜索一定的内容, 出现的页面一般是这样的:

其中最主要的部分是这样的:

搜索引擎通常会将搜索到的内容, 以: 网页的标题(title)网页的简单摘要(Content)即将跳转到的网页的网址(url) 为一个单元的形式展现出来. 并且, 包含的搜索的 关键字会被高亮显示

其他搜索引擎也是大同小异:

那么, 搜索引擎是如何做这整个过程的呢?


首先要明白, 输入关键字 点击搜索的这个行为, 其实是在创建并向服务器发送http/https请求的行为.

在客户端输入关键词, 点击搜索. 创建请求, 携带关键词向服务器发送请求.

服务器接收到请求之后, 根据关键词 在服务器检索索引 获取所有相关的html的内容, 然后 将获取到的多个网页内容(title、content、url), 拼接构建成一个新的网页 响应回客户端.

整个过程中最重要的过程在于: 检索索引

关于索引, 实际是一个帮助快速查找数据的数据结构. 根据关键词 检索索引, 就是在数据结构中查找关键词相关的数据.

索引, 是在 搜索引擎服务启动之前 服务器提前建立好的. 搜索引擎服务启动之后, 可以直接通过索引来检索数据.

搜索引擎索引的建立步骤一般是这样的:

  1. 爬虫程序爬取网络上的内容, 获取网页等数据
  2. 对爬取的内容进行解析、去标签, 提取文本、链接、媒体内容等信息
  3. 对提取的文本进行分词、处理, 得到词条
  4. 根据词条生成索引, 包括正排索引、倒排索引等

建立好索引之后, 搜索引擎服务就可以根据关键词 检索索引 获取相关数据.

这一整个流程, 即为 搜索引擎的相关宏观原理

大致的流程 以及 宏观原理图, 可以根据这一张图来理解

服务端需要做的第一个工作是爬取网页.

但是本项目中不需要, 因为是站内文档搜索, 官方提供的也有Boost库的相关源码文件, 其中就包括了Boost库的文档html文件.

Boost库源码下载

https://boostorg.jfrog.io/artifactory/main/release/

这是Boost库的源码发布页. 我们可以直接找到指定版本获取下载链接, 将文件下载到服务器中:

wget https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz

获取到源码压缩文件之后, 执行tar -zxvf boost_1_82_0.tar.gz解压

然后就获取了Boost库源码:

其中, 所有的文档html文件都在 doc//html/目录下:

|inline

统计了一下, 此目录下(包括子目录) 一共有8563html文件, 这些都是Boost库提供的文档

Boost库站内文档搜索 所需技术栈 以及 项目环境

技术栈:

  1. 后端: C/C++ C++11 STL Boost库 Jsoncpp cppjieba cpp-httplib
  2. 前端: html css js jQuery Ajax

项目环境:

  1. Centos 7云服务器 neovim gcc(g++) makefile

清理 分词 和 索引

实现一个搜索引擎, 最重要的地方在于 建立索引

建立索引, 就是建立 文档与关键词之间的的映射

清理文档文件

所以在建立索引之前, 要 先清理文档中对搜索无用的无效数据. 在html文件中, 无效数据就是html的各种标签:

<!-- 各种成对的标签 -->
<html></html>
<head></head>
<body></body>
<div></div>
<!-- 各种单独的标签 -->
<link>
<meta>
<img>

标签中, <>之间的内容都是对搜索来说无效的内容. 而对于成对的标签来说 ><之间的内容则是有效的内容.

简单点来说, 标签内部的数据 是对搜索无效的数据, 标签外的数据是对搜索有效的数据.

简单的举例子:

<div><p class="copyright">Copyright © 2005, 2006 Eric Niebler</p></div>
<div class="toc">
<p><b>Table of Contents</b></p>

其中有效的数据是: Copyright © 2005, 2006 Eric NieblerTable of Contents

其他的都属于标签内的数据, 都是对搜索无效的, 因为浏览器不会将标签内的数据值渲染出来, 那是一些属性.

分词

清理完文档中对搜索无用的无效数据之后, 就可以对文档的内容 进行分词.

分词, 就是将一句话中可用作关键字的词语分割开, 比如:

  1. 博主买了一些小米和南瓜

    分词就可能会分为: 博主 一些 小米 南瓜 小米和南瓜

  2. 博主做了小米南瓜粥吗

    分词就可能会分为: 博主 小米 南瓜 南瓜粥 小米南瓜粥

将可用作关键词的词汇组合或分开并汇总, 停止词不考虑, 就是分词.

停止词, 就是搜索中没有明显作用的词: 了 的 吗 呢 a the ...

索引

每个文件都有文件名 也就是文件ID, 文件内容包含了关键词. 将文件名和关键词之间建立映射关系, 就是建立索引.

以下以两个文件为例

  1. 文件1: 博主买了一些小米和南瓜

  2. 文件2: 博主做了小米南瓜粥吗

正排索引

正排索引, 是 从文件ID找到文件关键词:

文件ID内容关键词
文件1博主 一些 小米 南瓜 小米和南瓜
文件2博主 小米 南瓜 南瓜粥 小米南瓜粥

可以看作, 文件ID是Key 用于查找, 内容关键词是Value 是被找到的内容. 建立正排索引可以不对文件内容做分词

此项目中, 建立正派索引时不对文件内容做分词处理

倒排索引

与正排索引相反.

倒排索引, 是 从文件关键词找到文件ID. 并且, 会将所有文档中的关键词进行汇总去重:

关键词(唯一)涉及的文件ID(文件权重)
博主文件1、文件2
文件1
一些文件1
小米文件1、文件2
南瓜文件1、文件2
小米和南瓜文件1
文件2
南瓜粥文件2
小米南瓜粥文件2

可以看作, 关键词是Key 用于查找, 文件ID是Value 是被找到的内容.


项目中, 正排索引和倒排索引都需要建立并使用.

模拟整个查找到检索索引再到响应的流程:

输入关键词 --> “博主” --> 先在倒排索引检索 --> 获取"文件1""文件2"文件ID --> 再根据获取的文件ID在正排索引中检索 --> 检索到相关文件的文件内容(title、content、url) --> 根据内容构建新网页 --> 响应新网页


本片文章介绍了项目背景, 从下一篇文章开始开始编写项目代码

感谢阅读~


http://chatgpt.dhexx.cn/article/Sv6KLqNQ.shtml

相关文章

巧用搜索引擎---如何在指定网站中搜索

子曰&#xff1a;“工欲善其事&#xff0c;必先利其器。”在平时工作和学习中&#xff0c;网络上查找各种资料是最浪费时间的。在查资料的时候搜索功能是经常要用到的&#xff0c;常规的做法是在搜索引擎中直接搜索关键词。 比如我想找一下以前写过的一篇关于通信协议的文章。…

Chrome浏览器添加自定义搜索引擎-快速进行站内搜索

在使用Chrome时&#xff0c;设置了默认搜索引擎后&#xff0c;如果要切换搜索引擎比较麻烦。下面介绍一种通过关键字快速切换Chrome搜索引擎的方法。 打开 “设置” --> “搜索引擎” --> “管理搜索引擎” 修改关键字 点击1&#xff0c;修改关键字就可以了。 设置后&a…

站内搜索SITE

有的网站是没有站内搜索框的&#xff0c;这是我们可以利用搜索引擎的站内搜索 例如&#xff0c;JAVA天堂是没有站内搜索的 Java天堂 - Java学习笔记 这是我们可以使用百度或者必应搜索引擎在浏览器地址栏 输入&#xff1a; Servlet实现文件上传&#xff0c;可多文件上传 sit…

创建自己的搜索引擎,利用google进行站内搜索

宽为限 紧用功 功夫到 滞塞通 什么是自定义搜索&#xff1f; Google自定义搜索可以为您的网站&#xff0c;博客或网站集合创建搜索引擎。您可以配置搜索引擎来搜索网页和图像。您可以调整排名&#xff0c;自定义搜索结果的外观&#xff0c;并邀请您的朋友或信任的用户来帮助您…

Google SEO 搜索中心

在公司发展还没有那么成熟的时候&#xff0c;也许你的测试网站是外网可以公开访问的&#xff0c;也许你网站中的机密图片在测试环境&#xff08;不小心上到正式环境&#xff09;却被搜索引擎无情抓取&#xff0c;以及有些内部用户才能使用的网址&#xff0c;你并不想被搜索引擎…

如何指定网站内搜索关键字(借用已有搜索引擎)

目标&#xff1a;某个网站内&#xff0c;输入关键字搜索出相关东西 处境&#xff1a;这个网站开发者自己不去写搜索算法 解决方法&#xff1a;让微软的必应搜索引擎来做这件事&#xff0c;怎么弄呢&#xff0c;就是在必应搜索引擎页面里输入&#xff1a; xx关键字 site:xx网站 …

搜索引擎搜索特定网站的方法 :site

前言 从13开始的贴吧时代&#xff0c;还记得当时在贴吧里要搜索某些特定的帖子或者关键字的时候&#xff0c;用的都是“吧内搜索”&#xff0c;但用过的人都知道&#xff0c;这个所谓的吧内搜索其实很难用&#xff0c;大家都是用关键字空格贴吧之类的办法去搜索相关的内容。我…

简易的站内搜索引擎 (万字长文!!绝对值得一看!!)

搜索引擎的实现 项目简介项目背景项目开始前开始前的准备 四个模块预处理模块索引模块搜索模块服务器模块 项目简介 这里所实现的并非如同百度、谷歌一样的全网搜索&#xff0c;我们的硬件条件达不到&#xff0c;并且技术实力也不够&#xff0c;但是我们可以按照搜索引擎的基本…

站内搜索引擎

1.什么是搜索引擎&#xff1f; 如图所示&#xff1a; 我用的是谷歌浏览器&#xff0c;但是我的搜索引擎可以跟换 。切换到bing主页 在搜索框中我们输入一段话&#xff0c;跳到一个带有搜索结果的页面如下&#xff1a; 搜索引擎的核心功能&#xff1a;查找用户输入的词/一句话 …

SecureCRT 软件完全汉化

在正常汉化包的基础上&#xff0c;删除一个菜单文件&#xff0c;然后再运行"SecureCRT_CHS.exe" 程序即可 注意&#xff1a;如果以前是英文版本&#xff0c;则需要删除菜单配置文件后才可以正常汉化。直接删除SecureCRT配置目录下的"...\Config\SCRTMenuToolbar…

secureCRT安装、破解

SecureCRT是最常用的终端仿真程序&#xff0c;简单的说就是Windows下登录UNIX或Liunx服务器主机的软件。本文讲解SecureCRT的安装、破解与使用。 下载&安装 1.从https://pan.baidu.com/s/1dGMKJF7下载 2.解压缩下载的文件&#xff0c;双击scrt736-x64.exe执行安装。 破解…

【工具】SecureCR-8.5下载、安装激活和使用教程(包含常用设置)

目录 一、安装包下载 二、安装教程 三、激活操作 四、使用教程 五、常用设置 一、安装包下载 SecureCRT8.5安装包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1yy677I99ln_3evoHc5dMXg 提取码&#xff1a;9tyj 二、安装教程 1. 解压、双击进行安装 2. 安装进…

SecureCRT的下载、安装( 过程非常详细!!值得查看)

SecureCRT的下载、安装&#xff08; 过程非常详细&#xff01;&#xff01;值得查看&#xff09; 简单介绍下SecureCRT一、SecureCRT的下载二、SecureCRT的安装三、SecureCRT的使用 简单介绍下SecureCRT SecureCRT是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程…

SecureCRT和SecureFX的下载和安装2022

小编在新电脑上安装SecureCRT和SecureFX&#xff0c;按照之前写的文章步骤SecureCRT和SecureFX的下载和安装2021在使用注册机SecureFX.-kg.exe安装SecureFX的时候报错了&#xff0c;提示mfc100u.dll和msvcp100.dll两个文件找不到。&#xff08;注册机keygen.exe安装SecureCRT可…

SecureCRT 64位 破解版v8.1.4及安装

securecrt 破解版是一款支持SSH1和SSH2的终端仿真程序&#xff0c;这个程序能够在windows系统中登陆UNIX或Linux的服务器主机并且还能进行管理设置&#xff0c;是一款非常强大的ssh传输软件&#xff0c;是用于连接运行包括Windows、UNIX和VMS的理想工具。并且它还有打印功能、可…

SecureCRT下载和破解

一. secureCRT下载 secureCRT是一款支持SSH的终端仿真程序&#xff0c;简单的说是Windows下登录Linux服务器的工具。下载时&#xff0c;需要下载scrt安装包和Keygen注册机包。下载链接secureCRT安装包。 1. 下载文件 2. 安装SCRT 按照指定步骤安装即可 二. 破解 安装完成之…

SecureCRT 8.5下载安装破解

SecureCRT 8.5下载安装破解 不用关闭防火墙&#xff0c;不用下载注册机&#xff0c;不用csdn下载积分 不用关闭防火墙&#xff0c;不用下载注册机&#xff0c;不用csdn下载积分 公司领导让我下载SecureCRT&#xff0c;网上找了很多教程&#xff0c;注册机也下载了&#xff0c;…

【工具使用】SecureCRT的下载、安装图文详细过程介绍

本文目录 一、SecureCRT的介绍 二、SecureCRT的下载 三、SecureCRT的安装 四、SecureCRT的使用 一、SecureCRT的介绍 SecureCRT是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;简单地说是Windows下登录UNIX或Linux服务器主机的软件。 Secure…

2020最详细下载安装注册最新版 Secure CRT 8.7

文章目录 一.下载SecureCRT 8.7二.安装SecureCRT 8.7三.注册SecureCRT 8.7 一.下载SecureCRT 8.7 官网下载 网址:https://www.vandyke.com/products/securecrt/ 2.选择系统 3.选择64位或者32位 4.输入邮箱密码 邮箱 adminmail.bccto.me 密码 wheretogo8888 5.点击下载,下…

SecureCRT的下载安装

亲测成功了&#xff0c;按照下面的步骤完成即可&#xff01; 下载安工具包包地址连接&#xff1a;网盘地址点击即可 提取码&#xff1a;0lp7 1、下载SecureCRT 2、从百度网盘下载SecureCRT&#xff0c;页面如下 3、安装SecureCRT 4、激活SecureCRT 第一步&#xff1a;打开安装…