分享好友 最新动态首页 最新动态分类 切换频道
C++项目:基于boost在线文档实现的搜索引擎(一)
2024-12-27 04:03

下一篇:C++项目:基于boost在线文档实现的搜索引擎(二
github: https://github.com/duchenlong/boost-search-engine


  • :根据文档id,得到文档的内容
  • :根据文档的内容,得到文档的id

因为boost的官方文档中没有一个搜索的功能,那就可以利用下,为博客系统的搜索功能打一个小基础

那么的模块,就可以在这些官方文档的html文件中的文本来建立

  • common:放置公共模块的程序
  • data:和表示输入输出内容,表示临时数据
  • jieba_dict:jieba分词的词典文件
  • parser:预处理模块
  • searcher:搜索模块,索引模块

对于使用到的一些库,需要下载一下

  • :https://github.com/yhirose/cpp-httplib
    g++版本必须得是4.9以上

  • :下载地址 https://sourceforge.net/projects/boost/files/boost/1.53.0/

  • :下载地址 http://www.boost.org/doc/libs/1_53_0/doc/html/

  • :https://github.com/yanyiwu/cppjieba
    在这个库中,还需要一个,https://gitee.com/mirrors_yanyiwu/limonp?_from=gitee_search,然后放到cppjieba的include目录下就可以了

  • : yum install boost-devel.x86_64

  • : yum install jsoncpp-devel.x86_64

下载之后,对分词进行测试与使用


  1. 预处理模块

读取指定html文档的内容,解析出其中的文本内容:文档标题,文档URL,文档的正文(p,span,h1…等等这种文本标签中的内容
然后将解析的关键字的集合,整理到一起,为了之后建立索引打基础

  1. 索引模块

针对中得到的关键字的集合,对于这些关键字,逐一构造,并提供一些接口给其他函数中方便调用

  1. 搜索模块

首先,搜索模块中的内容会是一个长文本,得先对个文本进行分词 (分词

再根据分词的结果,根据倒排索引依次查找所有关键字,得到与这些关键字相关的所有文档 (触发

之后把所有相关的文档按照一定的规则进行排序,相关性越高的文档排在前面进行显示。(排序

  1. 服务器模块

Http服务器,给外部提供服务,使用搭建服务器


首先就是得到boost文档中 .html文件的路径,然后根据这些路径依次对这些文档的内容进行解析(标题,路径URL,正文,最后输出为一个行文本文件

  1. 枚举boost文档中所有 .html文件路径

这里封装一个函数,直接将所有的路径加入到数组中,执行失败返回

 

boost::filesystem 中的path类

path相关的函数名解释path(); path(const char* pathname); path(const std::string& pathname);构造函数const std::string& string( )返回用于初始化 path 的字符串的副本bool exists(const path&)检查文件的扩展名。文件可以为任何类型:常规文件、目录、符号链接等等std::string extension(const path&):此函数以前面带句点 (.) 的形式返回给定文件名的扩展名。例如,对于文件名为 test.cpp 的文件,extension 将返回 .cpp

,该迭代器可以递归的遍历指定路径下的所有文件,在遍历的途中,我们需要跳过目录以及不是.html文件的路径

最后所得到的路径,便是相对于文件的一个相对路径

 
  1. 根据路径遍历每个.html文件,对文件内容进行解析

直接遍历vector 数组中的每一个路径,然后依次打开文件,从中进行解析,并对解析函数进行封装

 

在该函数中,读取文件数据使用公共函数模块中封装的Read接口,然后再分别对标题,路径,正文的解析函数进行封装。

对于解析好的数据,我们进行一个结构体的描述

 
 
 
  1. 解析的结果写入到一个输出文件中

同理,对这个函数进行封装

 

对每一个单独的html文件进行解析后的数据,我们单独写在一行中,并用一个特定的符号进行分割。这个符号不能是正文中存在的,那就可以使用一些不经常使用的字符


最新文章
抖音信息流和内容热推的区别?抖音信息流价格分析软件
抖音广告投放策略比较:信息流和内容热推摘要:抖音作为当前流行的短视频平台,广告投放已经成为企业推广的重要手段。其中,信息流和内容热推是两种主要的广告投放策略。本文将从四个方面详细对比这两种策略的特点和应用场景,帮助企业更好
外贸SOHO建站报价——建个个人外贸网站多少钱
很多外贸SOHO和企业都需要建立外贸网站作为品牌推广的重要平台。因此,如果我们想知道建立一个外贸网站的价格,开发外贸网站Ueeshop可以跟大家一起看看都包含了哪一些内容。对于需要建立外贸网站的用户来说,他们可以看到很多不同的价格,
松鼠AI智能学习机:高效全科辅导新选择
松鼠AI智能学习机是一款高效全科辅导新选择,它结合了人工智能技术和教育知识体系,可以帮助学生自主学习、提高学习效率。松鼠AI智能学习机拥有多种学科的课程,包括语文、数学、英语、科学等,覆盖了小学到初中各年级的内容。学生可以根据
语音直播聊天系统开发(APP、公众号、小程序)
2015年01月15日潘锦霖系统开发,软件开发,APP开发,源码搭建,定制软件,社交电商,云电商,新媒体电商,O2O,F2C,B2C,B2B2C,F2B2C,C2B,B2C2N,S2B2C,微商城,App,手机网页,PC商城,小程序,微商管理系统,扫码红包,质量追溯,分销系统, 全返系统,分红系
用AI轻松生成超逼真美女写真,这款工具你一定要试!
在这个科技飞速发展的时代,AI生成技术的应用已经渗透到我们生活的各个角落。尤其是在摄影和艺术创作领域,AI工具带来了前所未有的便捷与可能性。想象一下,不用外出,只需要在你的手机或电脑屏幕前,就可以生成各类超逼真的美女写真,不再
魅族Lucky 08:性能强劲,拍照专业,千元机中的佼佼者
在当今智能手机市场,AI技术已成为各大品牌竞相追逐的焦点。魅族Lucky 08 AI手机,凭借其独特的AI功能和卓越的硬件配置,迅速成为市场上的热门话题。这款手机不仅在AI应用上有所创新,更在续航、屏幕显示和摄影等方面表现出色,为用户带来
精美PHP导航收录网站源码-QQ技术导航程序源码
划算本站会员的9大好处?1.发布的源码/资源,都已经经过本站/其他站长/用户大部分亲测可使用,质量极高!2.本站只发布合法内容,从不发布违法内容,服务器以续费5年,网站安全长久不跑路!3.本站整合了多个网站的永久高级会员,开通本站会
探讨数学与AI的奇妙碰撞:2024中国人工智能大会即将召开
即将于2024年12月13日至15日在北京举行的2024中国人工智能大会(CCAI 2024),将以“创新驱动智启新程”为主题,汇聚了数学与人工智能领域的重量级专家,其中包括丘成桐院士、戴琼海院士、林文伟教授等重量级嘉宾,他们将展开一场关于“AI
盘点AI编写剧本:国内免费好用的AI编写剧本平台
随着人工智能的快速发展,我们的生活中有越来越多的应用场景。其中之一就是帮助我们提高工作效率,比如,在创作领域中,有许多AI编写剧本平台,可以帮助我们快速提高写作效率,节省时间和精力。下面我们来详细盘点一下这些平台的特点和优势
让废片变身高清美图!无损放大技艺与搜狐简单AI工具全解析
访问搜狐简单AI官方网站或微信小程序:首先在浏览器中搜索“搜狐简单AI”,并点击进入工具页面。上传你的照片:在主页上,找到上传按钮,选择需要放大的照片。支持多种格式,比如JPG、PNG等,方便用户选择。选择放大参数:在确认上传成功后
相关文章
推荐文章
发表评论
0评