ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

boost项目复盘(三)

2021-03-10 15:51:51  阅读:167  来源: 互联网

标签:项目 结果 查询 JSON 搜索 格式 排序 boost 复盘


搜索
3.搜索模块大致来讲分为以下四大步:
1)分词:将查询词切成若干部分
2)触发:根据分词结果在倒排索引中查找哪些文档与查询词相关联
3)排序:根据相关性给文档排序
4)包装:最终将标题,描述,链接拼装成结果来显示

bool search(const std::string query,std::string* result)

这就是整个搜索模块的驱动函数,query中存放的是用户的查询词,result用来返回查询结果。看起来像是一个普通的string,实际上是一种特殊的结构——JSON。
由于返回的结果大致包含如下几个部分:1.许许多多个搜索结果。2.每个搜索结果又包含标题,url以及描述,即正文的一部分,一般要含有查询词。我们以查询词出现的地方,向前查询60个词,向后查询160个词,将显示不下的用 ... 来表示。
JSON的格式如下:
boost项目复盘(三)
其特点是:
1.使用[]表示数组,数组元素之间使用 , 隔开;
2.使用{}表示一组键值对,键值对之间也用 , 隔开;
3.键和值之间用 : 隔开
4.键的类型是固定的必须是字符串。
JSON格式最大的优势就是直观好看,是当前互联网中非常主流的一种数据组织形式,围绕这样的格式也产生了许多第三方库来进行操作。最后服务器把搜索结果就可以按照这个格式返回给网页前端,而网页端再根据这个格式进行解析就可以渲染出合适的页面。
得到返回结果以后就需要根据我们自定义的权重来给结果排序了。在调用sort函数时指定降序的排序规则就能使页面合理的显示结果。
第一次输入查询词“filesystem”时终端打印的搜索结果如下:
boost项目复盘(三)
看起来是不是像是乱麻,但仔细观察可以看到里面确实含有“标题 描述 url”这样的结构,再用在线JSON格式转换器转换便可以得到:
boost项目复盘(三)
与预期格式相同,目标达成。
至此,整个后端开发的部分全部完成。接下来,就需要一个好看的前端页面来展示后端完成的工作了,即最后使用cpp-httplib库搭建一个简单的http服务器,从而对外提供搜索服务。

标签:项目,结果,查询,JSON,搜索,格式,排序,boost,复盘
来源: https://blog.51cto.com/14289397/2654584

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有