【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站
大家好,我又来了,答应云栖论坛一周一篇文章, 由于工作太忙已中断1个多月实在抱歉,这一次写点轻松有趣的东西-快速的做个资源搜索站
依稀记得十来年前,带宽还只有2M的时候,受各个论坛启发,做了可以搜索嘿嘿嘿资源的搜索站
一晃这么多年过去,嘿嘿嘿的东西依然喜欢,但世间却变化万千
资源种类已不仅仅是X片,高清电影、纪录片、无损音乐、美剧、大型软件等等,似乎更加吸引
资源呈现方式也百花齐放,从最早的BT文件、电驴地址,到现在的磁链地址、各种云盘等等
而传统的P2P下载方式也变得格格不入,因为硬盘容量已经大到但凡大一点云存储服务商都把所有资源缓存在自己的服务器上,进行哈希匹配后直接提供离线下载资源(这也直接导致快播王欣被抓)
因此,作为资源的入口,电驴地址和磁链地址依然有着强大的生命力,受益于各商家庞大的离线存储,电驴、磁链地址已经近乎等同于直接的HTTP地址,并且有着比HTTP地址更友好的通用性。
随手百度一下BT搜索、磁链搜索关键词,就会出来很多类似的搜索网站,比如以下这些
而今天,我们也来搭建一个类似的网站,只不过
借助新技术,不仅搭建过程更加简化,建设思路也能有所革新,所以今天文章的主题就是:
使用阿里云开放搜索服务快速搭建资源搜索网站
先看一下最终的建设效果(访问地址:https://sodemo.alphams.cn/)
那么下面我们就一步一步来搭建这个简单的资源搜索网站
一、搭建前的一些准备和分析
资源搜索网站有如下几个关键点:
1、原始数据
没有个几百万条初始搜索数据,都不好意思和别人说是做资源站的,在这个案例里面,我们采用了simplecd官方制作的电驴地址打包,虽然年代比较久远,但也有百万条左右,下载地址为:
https://www.douban.com/group/topic/17230136/
请注意保护版权!
2、数据存储与检索
十多年前资源的数量以百万计算,现在一个饱满的资源站的资源数量应该早已过亿,数据库大小也应该在50G以上,这样的数据,使用阿里云RDS MySQL数据库具有较高的性价比,数据量再大一些还可以结合DRDS分布式数据库一同使用
对于具体的检索技术,不同的数据库的全文索引、分词等技术各不相同,甚至连MySQL的各种版本之间的处理都有区别,而由于数据库我是确实不会。。要是会的话就不至于一直用Linq ORM了。。我想象中的100万条数据全文检索的速度应该在0.01秒左右,但自己操作MySQL进行配置和优化,始终达不到这样的查询效率
因此今天这里选择了阿里云的开放搜索服务,让阿里云来处理这些难点。
这也是今天的一个主要讲解重点,实测证明,确实检索效率很高!
3、数据爬虫与更新
初始数据载入后,后续的数据更新也非常重要,主要靠爬虫程序进行每日更新,重点在于爬虫程序的效率的所爬目标的资源质量,这里有两个难点
1)所爬目标资源。电影站、软件站、BT搜索站等等,都可以是爬虫目标资源,而如果掌握了搜索引擎的高级用法,并引入无限数量的代理IP,则可以对搜索引擎直接进行定向爬取,效果更加。如能做到每日新增10万左右新资源,则是一个比较完美的效果。
2)爬虫程序。如果仅仅是对HTML进行查询和分析,则需要很高的正则使用技巧,而如果涉及到语义分析的话,更需要很强的语言分析相关技术。爬虫程序的逻辑编写,我想.NET Framework 4.5是再适合不过了,拥有先进的多线程并行库和丰富而全面的HTTP访问手段,完胜其他各种新型语言
经过以上的分析,设计出如下的系统架构图:
二、具体的搭建步骤
1、购买一个阿里云RDS数据库并进行相关配置
因为本项目纯属测试,所以买个便宜点的按时计费的MySQL RDS
每天7块多钱,还算可以接受的范围内。
购买完成后,申请一个外网地址(用于初始数据迁移)
最后获得了内外网的地址:
2、使用Navicat Premium(请支持正版,)打开下载好的SQLite格式的电驴初始数据
根据表结构可以看出相关数据存储方式,由于今天的案例比较简单,我们仅需要title、updatetime、ed2k这3个字段
3、根据需要的字段,在购买的RDS数据库中,建立数据库和表
通过Navicat Premium连接到阿里云
建立一个电驴资源表
4、通过Navicat Premium的数据迁移工具,将初始化数据导入RDS
由于没有直接的导入方式,我们先将SQlite数据导出为文本文件
再将文本文件导入到最终表中
5、通过阿里云开放搜索服务,与RDS连接并建立索引
选择通过数据源创建应用
设置ID为主键
默认定义了如下索引结构
我们只需要用到Title的检索,需要展示的内容则是title,ed2k,因此修改为如下:
创建完成后进行激活,选择了3G容量,每秒6次的配置(好像价格不便宜哦~)
激活完成后,会进行大约半个小时左右的索引,索引建立好之后,我们测试一下搜索效果
d
注意用时:用时0.008791秒
这比自己处理数据库,真是要高不少效率!看来使用阿里云开放搜索服务确实是一个值得尝试的新思路!
6、基本配置完成后,就是如何使用开放搜索服务了
先看一下官方文档的结构
标红的地方可以重点了解,在今天的案例里面,我们只需要用到API接口里面的Search接口,这是最简单的调用方式
文档还是比较简单,很容易就看懂了,签名这块阿里做的有些混乱,不过用官方提供的SDK,也能快速的使用服务
7、下面就在.NET中测试一下效果
先到官网下载一下.NET的SDK
然后建一个控制台测试程序,代码如下:
模拟进行搜索美食
返回成功
8、继续新建一个简单的asp.net Web Application,做一下前端访问首页
服务输出使用一个一般处理程序RS.ashx,代码如下:
页面就一个单页面
JS逻辑也很简单
访问效果如下:
好了,今天这个资源搜索网站就搭建好了
麻雀虽小五脏俱全,这个案例还是具备很强的实践性和延展性的,后续可以做的事情有如下:
1)完善爬虫程序
2)实现一个独立的管理后台,管理爬虫数据和开放搜索服务数据同步
3)增加用户管理
4)增加广告等营收
那么对今天这个案例的总结是:
今天的案例,可以说是一种全新的数据检索思路,成功的把部分面向数据库、面向技术的业务场景,转变为了面向服务、面向用户,以我自己为例,非常精通数据爬虫,精通资源,但对数据库技术并不在行,在不需要学习很深的数据库知识和技巧的情况下,阿里云开放搜索服务成功的帮助我将百万条数据的全文检索时间降低到了0.01秒,这不是传统的通过升级数据库配置、增加集群能解决的(花费上也不合理)。而我也坚信,这种思路,绝对不是阿里云官方Demo里面所说,可以用于论坛搜索这么简单,一定有更广阔的应用。所以,写了这么一个小案例,希望能够抛砖引玉,激发大家的灵感,做出更多创新。
本项目源码下载:https://github.com/chumakeji/resourcesearch
最后再吐槽几句:
我不是云服务架构设计工作者,但我见得多了,外面哪个云服务和开放平台我没有用过,我是身经百战了,有必要告诉阿里云开发者一些人生的经验,用完阿里云开放搜索服务,感觉就是,秉承了阿里云的一贯作风,运行效果8分,文档综合7分,架构设计5分,但说句实在话,阿里云开放搜索服务这个版本,无论是业务流程的设计,还是搜索语义语法的设计,又或是接口的设计,都很差!连我下载的.NET版本的SDK都写的混乱不堪(竟然还包含未隐藏并且能正确访问的Key和Secret。。。),应该说从深度来看,还达不到一个很高的水准,我印象中除了RDS,阿里云几乎每一个服务都是如此,被外部批评也是架构能力差,阿里云走的太急了,即使RDS技术应该也是延续了老淘宝数据库技术,也没什么值得骄傲的,现在的阿里云,什么都想做,快速迭代,快速上线,但什么都做不精,这是一个很危险的信号!
作者:张柔,本文发布于 博客园 与 阿里云云栖论坛
转载请注明出处,欢迎邮件交流:zhangrou@printhelloworld.com,或者加QQ群:11444444
转载于:https://www.cnblogs.com/chuma/p/5826331.html
【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站相关推荐
- 使用阿里云开放搜索服务快速搭建资源搜索网站
下面我们就一步一步来搭建这个简单的资源搜索网站 一.搭建前的一些准备和分析 资源搜索网站有如下几个关键点: 1.原始数据 没有个几百万条初始搜索数据,都不好意思和别人说是做资源站的,在这个案例里面,我 ...
- 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...
- 阿里云上基于WordPress快速搭建个人博客
阿里云上基于WordPress快速搭建个人博客 文章目录 阿里云上基于WordPress快速搭建个人博客 一.服务器环境: 二.环境部署: 1.重置实例密码 2.链接ECS服务器 3.安装Apache ...
- 阿里云ECS服务器+WordPress快速搭建个人博客
本文是转载,但完善了一些细节,精简了部分步骤,以及lnmp一键安装后的一些单独服务启动命令. 开始前准备: 一台阿里云ECS或者轻量级的服务器 Linux基础操作 喜欢捣鼓,善于思考 Windows上 ...
- 【阿里云学习笔记】快速搭建网站
在ECS服务器上,执行以下命令安装Apache及其扩展包,run命令 yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql ...
- SpringBoot-短信验证码-快速入门Demo(含redis)(手把手教你开通阿里云短信服务到写出个最终代码来)
B站小狂神-此博客的内容就是看了这个视频的总结(博主自己写的哦~并非转载) 视频链接-[狂神说]通俗易懂的阿里云短信业务实战教程(露脸) 您是否还在为别人的项目有短信功能自己的却没有? 您是否还在为自 ...
- 极智开发 | 阿里云ECS本地开发环境搭建
欢迎关注我的公众号 [极智视界],获取我的更多笔记分享 大家好,我是极智视界,本文介绍一下 阿里云ECS本地开发环境搭建. 之前介绍过华为云的开发环境搭建,有兴趣的同学可以移步我的这篇&l ...
- thinkphp6对接阿里云短信服务完成定时发送短信功能
1.导入阿里短信包 通过composer下载依赖包 composer require alibabacloud/dysmsapi-20170525 2.0.22 具体可参见阿里云短信服务 >&g ...
- 一分钟了解阿里云产品:阿里云开放云搜索初探
前阶段申请了阿里云开放云搜索(Aliyun OpenSearch)的邀请码,今早收到通过验证了,于是准备试试云搜索. 阿里云搜索使用很简单,和Lucene一样,包括索引文档字段几个概念.每个索引可以当 ...
最新文章
- VMware虚拟机相关文件问题
- Profiler 使用说明
- python利器下载-Python打包利器:auto-py-to-exe
- Linux开关机时长查看
- Android 插件化原理解析——Hook机制之AMSPMS
- 【时光之穿越一千年】python全文字频解析【jieba】【matplotlib构图】案例
- html5步骤条,自定义步骤条 , 纯原生html + css
- codeblocks printf函数打印不出来_最全C语言基本程序交互函数之输出到屏幕
- 设计一个矩形类rectangle_使用Python super()为您的类增强
- Python中的文件复制
- 字符串的碎片整理。。。
- 记一次生产环境脚本入侵检测与报警案例(检测特定目录被改动,自动报警)
- centos 7安装java开发环境
- 怎么判断网络回路_地暖管漏水怎么办?一打、二看、三确定,及时查出地暖管漏水点!...
- 《逻辑学导论》(第11版)学习(一)
- 如何创造一个能和你对话的语音AI?
- vue中swiper,vue-awesome-swiper实现轮播;鼠标移入暂停,移除播放;点击暂停按钮暂停,再点击播放。
- python写歌词解析器 王菲-传奇
- C++ Class6-虚函数-虚析构-多态-纯虚函数-抽象类-静态联编和动态联编-多态小练习(英雄联盟)
- 使用js修改图片像素颜色并保存
热门文章
- Fluent报错cl-set-default-save-dir: path does not exist.
- 【笔记】MOS导通条件
- jianx vtritualbox 虚拟镜像的体积
- 使用Arduino 连接旋转编码器
- java登入ajxs_微信小程序之获取并解密用户数据(获取openid,nickName等)
- 电化学传感器原理回顾
- python通过代理发送邮件_python发送邮件
- 嵌入式期末大作业——家用智能晾衣杆
- 你知道这些吗?8款优秀的Vue UI组件库推荐,都能打开呦
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Standard NLP tasks with specific vocabulary