菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
128
0

搜索技术架构-押韵精灵

原创
05/13 14:22
阅读数 94963

欢迎访问我的押韵精灵,是一个在线查询押韵的诗、词、歌、字的工具网站,包含双押多押等。

上一篇谈到了如何用阿里云搭建这样的网站,本文记录下该网站的整体架构,话不多说直接上图:

搜索技术架构

数据源

  数据可以直接从开源的地方下载或者自己弄个爬虫获取,这里给大家推荐一个C#爬虫和几个java爬虫:https://www.cnblogs.com/VectorZhang/p/5478711.html,    https://www.zhihu.com/question/31427895, 爬虫的架构几乎都大同小异。这里以Abot爬虫为例

上图中 绿色的箭头表示线程从Url Repository获取需要爬取的Url, 黑色的箭头表示线程将未爬取Url放入Url Repository。

主要的模块有:

1) Url Repository 存储所有需要爬取的Url,底层的实现采用了ConcurrentQueue,因此是线程安全的,也满足了先进先出的规则。

2) Thread Manager 管理所有的爬取线程,线程个数默认是当前处理器的个数,也可以通过Config 指定。

3) Robots 处理robots.txt 的模块,Abot 直接封装了NRobotsPatched 来解析robots.txt

4) LinkParser解析当前爬取到的page 中的链接,Abot 很大程度上利用了HtmlAgilityPack

5) Crawled Url Repository 存储已经爬取的Url,Abot 内部有多个实现

6) Http download 采用了HttpWebRequest 和 HttpWebResponse

7) Memory Monitor 主要是监控内存使用等等,可以通过Config设置爬虫的内存使用上限等

8) Event 相关,主要是在适当的时候触发像Start Crawl 等事件

未来规划

整个的架构已经成型,未来需要完善的点有
  1. 数据是一次性预处理到mysql以及一次性dump到搜索引擎,未来可以实现T+1全量dump以及通过爬虫增量进引擎
  2. 干预的数据目前只有黑名单而且是召回后干预,未来需要将干预数据落到引擎
  3. 指标只有曝光UV和搜索UV,点击率等指标还需要完善,列表点击并未形成闭环
  4. 缺乏点击率 和 用户纬度的特征,导致目前精排能力有限,成语和词语没有打散处理
  5. 用户登录功能缺失,未来加入微信扫描登录功能
  6. 资金有限,资源有限,ES存储的数据只保留的少数几天,有条件了直接购买阿里云ES服务

 

发表评论

0/200
128 点赞
0 评论
收藏