1.项目背景及原理|正排索引|倒排索引分词

项目背景

个人项目只能做站内搜索,搜索的数据更垂直,数据量更小
![[Pasted image 20250209224852.png]]

展示的内容应该包括

  • 网页的title
  • 网页内容的摘要描述
  • 即将跳转到的网址url

宏观原理

  • 客户端(电脑或手机)
    • 浏览器
      • 通过http请求的方式进行搜索任务
      • 通过GET方式,上传搜索关键字
  • 服务器server
    • 服务软件:searcher搜索引擎,绑定特定端口
    • 磁盘,有一个目录,会存放在全网当中抓取到的网页信息
      • 通过爬虫程序搜索对应的网页并抓下来
      1. 去标签&&数据清理
      2. 建立索引,加速网页查找
      3. 检索索引,得到相关html,根据搜索的结果拼接多个网页的title和desc和url,构建一个新的网页返回给用户
        ![[Pasted image 20250210032910.png]]

技术栈和项目环境

技术栈:

C/C++,C++11,STL,准标准库Boost(文件操作),Jsoncpp(客户端和服务端数据交换),cppjieba(分词),cpp-httplib(http服务器)
前端:html5,css,js、jQuery、Ajax

项⽬环境:

Centos 7云服务器,vim/gcc(g++)/Makefile(服务端),vs2019 or vs code(网页端)

搜索引擎具体原理

正排索引

正排索引:就是从文档ID找到文档内容(文档内关键字)
定义:文档到内容的映射,存储每个文档及其包含的内容(如单词列表)。
特点:通过文档ID可以直接获取文档的全部内容。

ID内容
1apple banana
2banana cherry
3apple cherry
用途
  • 直接通过文档ID获取文档内容(如网页快照)。
  • 适用于需要完整文档信息的场景。
分词

目标文档进行分词(方便建立倒排索引和查找)
停止词:了,的,吗,a,the,⼀般我们在分词的时候可以不考虑

倒排索引

倒排索引:根据文档内容,分词,整理不重复的各个关键字,对应联系到文档ID的方案
定义:单词到文档的映射,存储每个单词及其出现的文档列表。
特点:通过关键词快速找到包含它的文档。

关键词ID
apple1,3
banana1,2
cherry2,3
用途
  • 搜索引擎的核心结构(如Google搜索关键词时快速定位相关网页)。
  • 支持高效的关键词查询和相关性排序。
完整查找过程

用户输⼊:apple -> 倒排索引中查找 -> 提取出⽂档ID(1,3) -> 根据正排索引 -> 找到⽂档的内容 -> title+conent(desc)+ url ⽂档结果进⾏摘要 -> 构建响应结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值