ARTS (第52周)
积累自己。
Algorithm 算法
小型搜索引擎
简介
实现了搜索引擎的爬取、构建索引功能。
并使用Socket和NIO,自定义一个简易的http服务器。实现浏览器使用搜索引擎的功能。
项目地址
1 | https://github.com/la-huan/small_search_engine |
实现思路
核心的实现思路是倒排索引。
功能分为三部分
1、爬取数据,提取有用的信息,并倒排索引。
首先维护若干个种子URL,放入URL队列。
然后不断从队列里获取URL,使用这些URL爬取信息,分析返回的信息,从返回的信息中提取URL再放入队列,并从中提取有用的信息,如网页的keyword、description等,再将信息进行分词,以统计出每一个URL里有哪些分词。最后再进行倒排索引。形成类似每个词对应多个URL的索引,并进行报错。
索引结果如:
1 | 8[1,2,3] //词为8,所对应的URL为1,2,3。 |
2、根据倒排索引的结果,快速查询结果。
输入要查询的信息,将查询信息进行分词。
根据分词查找索引,即可快速找出所有匹配的URL信息。
3、自定义的简易HTTP服务器
使用Socket和NIO,自建一个简易的http服务器。实现浏览器使用搜索引擎的功能。
使用NIO的Select方法,使用非阻塞式IO处理请求。
根据请求内容,分别处理首页请求和查询请求,做对应的处理。
Review 英文文章
https://spring.io/guides/gs/relational-data-access/
spring整合JDBC,即spring的 JdbcTemplate
Tip 技巧
HTTP请求报文
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。
HTTP响应报文
同样的,HTTP响应报文也由三部分组成:响应行、响应头、响应体
https://www.cnblogs.com/ldq2016/p/9055933.html
HTTP协议其实就是基于TCP协议的,在TCP协议的基础上写HTTP的报文 如报文头等。所以利用SOCKET就可以实现一个简单的HTTP服务器。
Share 分享
https://www.cnblogs.com/ldq2016/p/9055933.html HTTP请求/响应报文结构
https://www.jianshu.com/p/6bdee8cfee90 [NIO] selector 为什么无限触发就绪事件