【Boost搜索引擎项目】Day1 项目介绍+去标签和数据清洗框架搭建

🌈欢迎来到C++项目专栏

🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生

🌏IP坐标:湖北武汉

🍉 目前技术栈:C/C++、Linux系统编程、计算机网络、数据结构、Mysql、Python

🍇 博客介绍:通过分享学习过程,加深知识点的掌握,也希望通过平台能认识更多同僚,如果觉得文章有帮助,请您动动发财手点点赞,本人水平有限,有不足之处欢迎大家扶正~

🍓 最后送大家一句话共勉:知不足而奋进,望远山而前行。


Day1

1.项目介绍

对比常用搜索引擎,实现一个简易版的站内搜索引擎。

基于boost库实现,boost库官网上是没有站内搜索引擎的,我们自己实现一个,部署在自己的云服务,客户端可以通过浏览器访问服务器地址,实现搜索引擎功能的使用。

2.搜索引擎宏观介绍

常用搜索引擎,如百度 搜狗等,搜索引擎框架可简易理解如上图,我们实现的站内搜索引擎对比就是把相关资料提前下载到云服务器本地,当用户使用搜索功能时,在服务器本地进行检索反馈。

3.相关技术栈和项目环境

  • 技术栈: C/C++ C++11, STL, 准标准库Boost,Jsoncpp,cppjieba,cpp-httplib , 选学: html5,css,js、Query、Ajax
  • 项目环境: Centos 7云服务器,vim/gcc(g++)/Makefile , vs2019 or vs code

4.正排索引VS倒排索引-搜索引擎具体原理

5.编写数据去标签与数据清洗的模块

先去boost官网将文件下载下来,使用rz命令将文件拖拽到Linux服务器

解压命令:

创建好数据文件夹用来区分处理好的数据,方便后期读取使用

  • 编写parser.cc模块
cpp 复制代码
//代码的基本结构:
#include <iostream>
#include <string>
#include <vector>
//是一个目录,下面放的是所有的html网页
const std::string src_path = "data/input/";
const std::string output = "data/raw_html/raw.txt";
typedef struct DocInfo{
  std::string title;  //文档的标题
  std::string content; //文档内容
  std::string url;   //该文档在官网中的url
}DocInfo_t;
//const &: 输入
//*: 输出
//&:输入输出
bool EnumFile(const std::string &src_path, std::vector<std::string> *files_list);
bool ParseHtml(const std::vector<std::string> &files_list, std::vector<DocInfo_t>
*results);
bool SaveHtml(const std::vector<DocInfo_t> &results, const std::string &output);
int main()
{
  std::vector<std::string> files_list;
  //第一步: 递归式的把每个html文件名带路径,保存到files_list中,方便后期进行一个一个的文件进行读取
  if(!EnumFile(src_path, &files_list)){
    std::cerr << "enum file name error!" << std::endl;
    return 1;
 }
  //第二步: 按照files_list读取每个文件的内容,并进行解析
  std::vector<DocInfo_t> results;
  if(!ParseHtml(files_list, &results)){
    std::cerr << "parse html error" << std::endl;
    return 2;
 }
  //第三步: 把解析完毕的各个文件内容,写入到output,按照\3作为每个文档的分割符
  if(!SaveHtml(results, output)){
    std::cerr << "sava html error" << std::endl;
    return 3;
 }
  return 0;
}
bool EnumFile(const std::string &src_path, std::vector<std::string> *files_list)
{
  return true;
}
bool ParseHtml(const std::vector<std::string> &files_list, std::vector<DocInfo_t> *results)
{
  return true;
}
bool SaveHtml(const std::vector<DocInfo_t> &results, const std::string &output)
{
  return true;
}
  • 安装boost开发库
    $ sudo yum install -y boost-devel //是boost 开发库
相关推荐
knighthood20012 分钟前
解决:ros进行gazebo仿真,rviz没有显示传感器数据
c++·ubuntu·ros
Source.Liu13 分钟前
【用Rust写CAD】第二章 第四节 函数
开发语言·rust
monkey_meng13 分钟前
【Rust中的迭代器】
开发语言·后端·rust
余衫马16 分钟前
Rust-Trait 特征编程
开发语言·后端·rust
monkey_meng19 分钟前
【Rust中多线程同步机制】
开发语言·redis·后端·rust
Jacob程序员21 分钟前
java导出word文件(手绘)
java·开发语言·word
小白学大数据28 分钟前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
VBA633730 分钟前
VBA之Word应用第三章第三节:打开文档,并将文档分配给变量
开发语言
半盏茶香30 分钟前
【C语言】分支和循环详解(下)猜数字游戏
c语言·开发语言·c++·算法·游戏
小堇不是码农37 分钟前
在VScode中配置C_C++环境
c语言·c++·vscode