C++之基于正倒排索引的Boost搜索引擎项目数据清洗代码及详解(上)

C++之基于正倒排索引的Boost搜索引擎项目数据清洗代码及详解(上)

1.为什么要进行数据清洗

这是因为我们获得的网页信息包含了很多我们不想要的部分(标签),同时我们需要把title还有content从网页里面提取出来,这样方便我们后期对其进行处理。

2. 怎么进行数据清洗

我们可以把这分为三步。

2.1 第一步

第一步就是通过Enumfile函数把src_path里面的文件名(带路径),保存到file_list中,方便后期对文件进行一个一个的读取。

PS:src_path里面存的就是没有被处理过的信息。

这一步的本质是把src_path里面的关于网页的部分先筛选出来,我们只需要以.html结尾的普通网页文件,其他的都不要。

2.2 第二步

把筛选后的文件去标签化,然后把其分为title和content并构建url,接着存入results里面。

PS:之所以要去标签是因为网页里面实际上包含了很多很多没有的部分,可能是文字的大小或者颜色之类的。我们要把这些全部都去除。

就是把这里打钩的全部提取出来。

2.3 第三步

把去标签后的信息全部给写入到output里面。

PS:我们看到这里可能会疑惑为什么不写到一起,为什么要一步就要换一个容器呢?这是为了防止代码因为其中一部分出现问题而崩溃或者出现我们不想看到的结果。我们要降低代码之间的关系,同时这样分开写还可以写一点编译一点,千万不要把所有的代码全部写完后再编译,这是会出现问题的。

    typedef struct DocInfo { std::string title;//文档的标题 std::string content;//文档的内容 std::string url;//该文档在官网中的url }DocInfo_t; int main() { std::vector<std::string> file_list; //第一步:所以EnumFile,EnumFile函数通过递归的方式把src_path里面的文件名(带路径),保存到file_list中,方便后期对文件进行一个一个的读取。 if(!EnumFile(src_path,&file_list)) { std::cout<<"EnumFile error!!!"<<std::endl; return 1; } //第二步:读取file_list里面每一个文件的内容,并进行解析,然后解析进results std::vector<DocInfo_t> results; if(!ParseHtml(file_list,&results))//读取并解析 { std::cout<<"ParseHtml error"<<std::endl; return 2; } //第三步:把解析后的文件的内容写到output里面,然后按照/3作为每个文件的分隔符 if(!SaveHtml(results,output)) { std::cout<<"SaveHtml error"<<std::endl; return 3; } return 0; }

    Read more

    最全java面试题及答案(208道)

    最全java面试题及答案(208道)

    本文分为十九个模块,分别是:「Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM」 ,如下图所示: 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。 Java 基础 1. JDK 和 JRE 有什么区别? * JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java

    By Ne0inhk
    10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

    10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

    文章目录 * 一、引言 * 云计算平台概览 * ToDesk云电脑:随时随地用上高性能电脑 * 二 .云电脑初体验 * DeekSeek介绍 * 版本参数与特点 * 任务类型表现 * 1、ToDesk云电脑 * 2、顺网云电脑 * 3、海马云电脑 * 三、DeekSeek本地化实操和AIGC应用 * 1. ToDesk云电脑 * 2. 海马云电脑 * 3、顺网云电脑 * 四、结语 * 总结:云电脑如何选择? 一、引言 DeepSeek这些大模型让 AI 开发变得越来越有趣,但真要跑起来,可没那么简单! * 本地配置太麻烦:显卡不够、驱动难装、环境冲突,光是折腾这些就让人心态崩了。 * 云端性能参差不齐:选错云电脑,可能卡到爆、加载慢,还容易掉线,搞得效率直线下降。 * 成本难控:有的平台按小时计费,价格一会儿一个样,

    By Ne0inhk
    用 DeepSeek 打造你的超强代码助手

    用 DeepSeek 打造你的超强代码助手

    DeepSeek Engineer 是啥? 简单来说,DeepSeek Engineer 是一个基于命令行的智能助手。它能帮你完成这些事: * 快速读文件内容:比如你有个配置文件,直接用命令把它加载进助手,后续所有操作都可以基于这个文件。 * 自动改文件:它不仅能提建议,还可以直接生成差异表(diff),甚至自动应用修改。 * 智能代码生成:比如你让它生成代码片段,它会按照指定格式和规则直接返回。 更重要的是,这一切都是通过 DeepSeek 的强大 API 来实现的。想象一下,你有个贴身助手,不仅能听懂你的代码需求,还能直接动手帮你写! 核心功能拆解 我们先来看 DeepSeek Engineer 的几个核心能力,让你更好地理解它的强大之处。 1. 自动配置 DeepSeek 客户端 启动这个工具时,你只需要准备一个 .env 文件,里面写上你的 API Key,比如: DEEPSEEK_API_

    By Ne0inhk
    解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式

    解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式

    🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Docker 2、什么是Ollama 二、准备工作 1、操作系统 2、镜像准备 三、安装 1、安装Docker 2、启动Ollama 3、拉取Deepseek大模型 4、启动Deepseek  一、引言 1、什么是Docker Docker:就像一个“打包好的App” 想象一下,你写了一个很棒的程序,在自己的电脑上运行得很好。但当你把它发给别人,可能会遇到各种问题: * “这个软件需要 Python 3.8,但我只有 Python 3.6!

    By Ne0inhk