首页 > 其他分享 >【boost_search】3.为什么去标签和解析文件的代码框架

【boost_search】3.为什么去标签和解析文件的代码框架

时间:2024-08-23 22:26:38浏览次数:13  
标签:std search vector string url 标签 list html boost

一.什么是标签?

我们之前获取的源数据都是html数据,在一个html中我们看到

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">              
  2 <html>
  3 <head>
  4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5 <title>Chapter 15. Boost.Heap</title>
  6 <link rel="stylesheet" href="../../doc/src/boostbook.css" type="text/css">
  7 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  8 <link rel="home" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
  9 <link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)">
 10 <link rel="prev" href="function/testsuite.html" title="Testsuite">
 11 <link rel="next" href="heap/concepts.html" title="Concepts &amp; Interface">
 12 <meta name="viewport" content="width=device-width, initial-scale=1">
 13 </head>
 14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 15 <table cellpadding="2" width="100%"><tr>
 16 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
 17 <td align="center"><a href="../../index.html">Home</a></td>
 18 <td align="center"><a href="../../libs/libraries.htm">Libraries</a></td>
 19 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
 20 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
 21 <td align="center"><a href="../../more/index.htm">More</a></td>
 22 </tr></table>
 ........

在一个html中,我们看到有一些字符是用<>包起来的,用<>的就是标签

二.为什么要去标签?

因为这些标签对我们搜索是没有价值的,我们只需要在最后搜索的时候,获取到要去往的网站的url就可以跳转到对应的网站了,标签的存在会减少我们搜索的效率,并且它在网页中也不显示,所以我们要把它去掉?

三.如何去标签?

  1. 我们要先将我们源数据里的html目录下的html文件的目录获取。
  2. 再通过对应的一个个html文件打开,存储到一个字符串中,然后将字符串里的标签给去掉,并对剩下的html的内容进行解析,将它分为: 标题、 内容、 url,我们可以用一个结构体来保存一个html的解析内容,然后再用一个vector来对这些文档进行管理起来。
  3. 最后将我们解析好的内容保存起来,文档和文档之间用\n隔开,文档的标题,内容,url用\3来分开(因为\3在ASCII表里表示正文结束的意思)

四.文档内容为什么要分为标题 、 内容、 url?

我们是仿照百度的搜索结果展示的。
在这里插入图片描述

五. 代码的框架

#include <vector>    
  #include <string>    
      
  struct DocInfo    
  {    
      std::string title;   //标题    
      std::string content; //内容    
      std::string url;     //url    
  };    
      
  const std::string src_data = "./data/html";    
  const std::string raw_html = "./data/raw_html";    
      
  //枚举文件:将源数据目录下的html文件的位置获取,并用一个输出型参数来存储文件的位置    
  bool EnumFile(const std::string& src_data, std::vector<std::string>* file_list);    
      
  //解析文件,将文件分为标题、内容、url,并存储到一个输出型参数中    
  bool ParserFile(const std::vector<std::string>& file_list, std::vector<DocInfo>* results);    
      
  //将解析好的文件放进raw_html目录下                                                                                    
  bool SaveFile(const std::vector<DocInfo>& results, std::string raw_html);    
      
  int main()    
  {
      std::vector<std::string> file_list;    
      if(!EnumFile(src_data,(&file_list) ))
      {                                                                                                                 
          std::cerr << "EnumFile Error!" << std::endl;
          exit(0);
      }
  
      std::vector<DocInfo> results;
      if(!ParserFile(file_list, &(results)))
      {
          std::cerr << "ParserFile Error!" << std::endl;
          exit(0);
      }
  
      if(!SaveFile(results, raw_html))
      {
          std::cerr << "SaveFile Error!" << std::endl;
          exit(0);
      }
      return 0;
  }
  //枚举文件:将源数据目录下的html文件的位置获取,并用一个输出型参数来存储文件的位置
bool EnumFile(const std::string& src_data, std::vector<std::string>* file_list)
  {
      return true;
  }
  
                                                                                                                        
  
  //解析文件,将文件分为标题、内容、url,并存储到一个输出型参数中
bool ParserFile(const std::vector<std::string>& file_list, std::vector<DocInfo>* results)
  {
      return true;
  }
  
  //将解析好的文件放进raw_html目录下
bool SaveFile(const std::vector<DocInfo>& results, std::string raw_html)
  {
      return true;
  }



标签:std,search,vector,string,url,标签,list,html,boost
From: https://blog.csdn.net/2403_86785171/article/details/141475911

相关文章

  • 织梦dede:php标签是什么
    {dede:php} 标签是织梦CMS(DedeCMS)中的一个特殊标签,用于在模板文件中嵌入PHP代码。这个标签允许开发者在织梦CMS的模板中直接编写PHP代码,从而实现更灵活的逻辑处理。用法概述标签语法:开始标签:{dede:php}结束标签:{/dede:php}基本用法:在 {dede:php} 和 {/de......
  • windows下安装es与elasticsearch报错
    发现网上很少关于windows安装elasticsearch的文章,所以本人结合一天的报错,解决问题的过程,写一下这篇文章,希望对大家有用,有帮助的话请点一个免费的赞,谢谢。安装es下载:点击https://www.elastic.co/cn/downloads/elasticsearch-->点击'Viewpastreleases'-->下拉栏中,找到7.10......
  • html之input标签
    input标签在html中是非常重要的一种标签主要应用场景:‌1.登录表单‌:使用文本框和密码框收集用户名和密码。2‌.注册表单‌:收集用户的个人信息,如姓名、邮箱、地址等。3‌.调查问卷‌:使用单选框和复选框收集用户的选项。‌4.文件上传‌:使用文件上传控件允许用户上传文件。‌学......
  • 轻松上手:Docker部署Elasticsearch,高效构建搜索引擎环境
    我在前一段时间写了一个ES简介,博主建议大家先看完简介再来安装ES,那篇博文是:深入理解Elasticsearch:让搜索性能飞起来!-CSDN博客服务器开放9200和9300端口号:1.打开目录:cd/usr/local/docker/2.创建es目录:mkdires3.打开es目录:cdes/4.下载镜像:我在这里声明一下......
  • JavaScript 的 标签
    标签标签在JavaScript中不是一个常见的特性,但在某些情况下,它们可以用于改善循环的可读性或退出嵌套循环。//使用标签来标识循环loop1:for(leti=0;i<10;i++){//循环1loop2:for(letj=0;j<10;j++){//循环2if(i===2&&j===2){......
  • 织梦dedecms二级菜单中判断子菜单标签怎么用
    在织梦DeDeCMS中,实现二级菜单通常涉及到使用织梦特有的标签来动态生成菜单结构。下面是如何在二级菜单中使用织梦标签来判断子菜单的存在,并据此显示或隐藏子菜单的方法。1.准备工作确定主菜单:首先确定您想要作为主菜单的栏目ID。创建子菜单:在后台为相应的主菜单创建子栏目。......
  • 深入理解Elasticsearch:让搜索性能飞起来!
    Elasticsearch 概述Elasticsearch是一个基于lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。ELK技术栈是Elasticsearch、Logstash、Kibana三大开元框架首字母大写简称。而Elasticsearch是一个开源的高扩展的分布式全文搜索引擎,是整个ELK技术栈的......
  • 刚推出SearchGPT结果被曝亏损50亿美元,OpenAI寿命只剩一年了?
    OpenAI前几天宣布了一项令人惊讶的消息——推出人工智能搜索引擎原型SearchGPT,直接挑战谷歌在在线搜索市场的主导地位。这一大胆举动预示着人工智能搜索大战将大幅升级,并可能重塑用户在网络上查找信息和与信息互动的方式。01.SearchGPT带来新变化SearchGPT是一个新的人......
  • 详解Elastic Search及架构
    前言             如果我有三段文本,id分别为0、1、2,具体如下,我要找到哪段文本里有关键词es,这时最容易想到的办法就是依次遍历文本,匹配es,最后将符合的文本id输出。    0 ilike es    1 ilovees    2 iusedevops......
  • 织梦dedecms标签怎么用
    了解一下织梦模板引擎的知识是非常有意义的。模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引擎不单能实现模板的解析还能分析模板里错误的标记。1、织......