✨✨欢迎来到T_X_Parallel的博客!!
🛰️博客主页:T_X_Parallel
🛰️项目代码仓库:站内搜索引擎项目代码仓库
🛰️专栏 : 站内搜索引擎项目
🛰️欢迎关注:👍点赞🙌收藏✍️留言
1.项目相关背景
全网搜索引擎
在这个互联网时代,很多互联网公司做的就是搜索引擎,比如百度、搜狗和360等,这些都是国内主流搜索引擎
自己想要做出这样的全网搜索引擎几乎很难实现,工程量巨大
百度一下,你就知道
360搜索,SO靠谱
搜狗搜索引擎 - 上网从搜狗开始
站内搜索
🐾相较于全网搜索,还有一种搜索引擎是站内搜索,这种搜索引擎的数据更垂直,数据量也比较小。比如一些网站里面的搜索,像优快云、gitee、github等
像这种站内搜索,数据量比全网搜索小了好几个量级,所以个人开发一个这样站内搜索相对容易一些
2.Boost网站介绍
🐾boost是C++库之一,这个网站就是该库的官方网站,这个网站涵盖了boost库各种函数的使用介绍,虽然现在boost官网也增加了搜索功能,但是我们仍然可以使用boost官网的资源自己做个boost搜索引擎
boost官网地址:Boost C++ Libraries
下面是boost官网自己的搜索引擎
所以该项目的任务就是做出很官方类似的boost库文档搜索引擎
3.项目实现大致原理
搜索引擎宏观原理
虚线框中就是我们这次项目所要完成的,包括http请求、数据清洗和去标签、建立索引等
项目技术栈及环境
技术栈:
C/C++11、STL、标准库Boost、Jsoncpp、cppjieba、cpp-httplib、html+CSS+js、jQuery、Ajax、g++、Makefile、Cmake
项目环境:
vscode、WSL(Winodws Subsystem for Linux)
搜索引擎核心——正排索引和倒排索引
举个例子
文档一:雷军在小米汽车app中订购了一台小米su7ultra
文档二:雷军在小米商城app中订购了一台小米15ultra
文档内容进行分词(方便建立倒排索引和查找)
文档一:雷军/小米汽车app/订购/一台/小米/su7ultra
文档二:雷军/小米商店app/订购/一台/小米/小米15/小米15ultra
像了、的、the等停止词一般不予考虑
正排索引:从文档ID找到文档内容
文档ID | 文档内容 |
---|---|
1 | 雷军在小米汽车app中订购了一台小米su7ultra |
2 | 雷军在小米商城app中订购了一台小米15ultra |
倒排索引:根据⽂档内容,分词,整理不重复的各个关键字,对应联系到⽂档ID
关键词(唯一性) | 文档ID(多个对应关系应该计算权重) |
---|---|
雷军 | 文档1、文档2 |
小米 | 文档1、文档2 |
小米汽车app | 文档1 |
小米商城app | 文档2 |
订购 | 文档1、文档2 |
一台 | 文档1、文档2 |
su7ultra | 文档1 |
小米15 | 文档2 |
小米15ultra | 文档2 |
根据上面正排索引和倒排索引的举例介绍,可以大致模拟出一次搜索的过程:⽤⼾输⼊:⼩⽶->倒排索引中查找->提取出⽂档ID(1,2)->根据正排索引->找到⽂档的内容-> title+conent(desc)+url ⽂档结果进⾏摘要->构建响应结果
下一节内容就会从数据的清洗与去标签开始实现
专栏:站内搜索引擎项目
项目代码仓库:站内搜索引擎项目代码仓库(随博客更新)
都看到这里了,留下你们的珍贵的👍点赞+⭐收藏+📋评论吧