使用阿里云开放搜索服务快速搭建资源搜索网站

article/2025/10/7 6:40:26

下面我们就一步一步来搭建这个简单的资源搜索网站

一、搭建前的一些准备和分析

资源搜索网站有如下几个关键点:

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访问手段,完胜其他各种新型语言

经过以上的分析,设计出如下的系统架构图:

image

二、具体的搭建步骤

1、购买一个阿里云RDS数据库并进行相关配置

因为本项目纯属测试,所以买个便宜点的按时计费的MySQL RDS

image

每天7块多钱,还算可以接受的范围内。

购买完成后,申请一个外网地址(用于初始数据迁移)

image

image

最后获得了内外网的地址:

image

2、使用Navicat Premium(请支持正版,)打开下载好的SQLite格式的电驴初始数据

image

image

根据表结构可以看出相关数据存储方式,由于今天的案例比较简单,我们仅需要title、updatetime、ed2k这3个字段

3、根据需要的字段,在购买的RDS数据库中,建立数据库和表

image

image

通过Navicat Premium连接到阿里云

image

建立一个电驴资源表

image

4、通过Navicat Premium的数据迁移工具,将初始化数据导入RDS

由于没有直接的导入方式,我们先将SQlite数据导出为文本文件

image

 

再将文本文件导入到最终表中

image

image

image

image

image

5、通过阿里云开放搜索服务,与RDS连接并建立索引

image

image

选择通过数据源创建应用

image

image

设置ID为主键

image

默认定义了如下索引结构

image

我们只需要用到Title的检索,需要展示的内容则是title,ed2k,因此修改为如下:

image

创建完成后进行激活,选择了3G容量,每秒6次的配置(好像价格不便宜哦~)

image

激活完成后,会进行大约半个小时左右的索引,索引建立好之后,我们测试一下搜索效果

imaged

注意用时:用时0.008791秒

这比自己处理数据库,真是要高不少效率!看来使用阿里云开放搜索服务确实是一个值得尝试的新思路!

6、基本配置完成后,就是如何使用开放搜索服务了

先看一下官方文档的结构

image

标红的地方可以重点了解,在今天的案例里面,我们只需要用到API接口里面的Search接口,这是最简单的调用方式

image

文档还是比较简单,很容易就看懂了,签名这块阿里做的有些混乱,不过用官方提供的SDK,也能快速的使用服务

7、下面就在.NET中测试一下效果

先到官网下载一下.NET的SDK

image

然后建一个控制台测试程序,代码如下:

image

模拟进行搜索美食

返回成功

image

8、继续新建一个简单的asp.net Web Application,做一下前端访问首页

服务输出使用一个一般处理程序RS.ashx,代码如下:

image

页面就一个单页面

image

JS逻辑也很简单

image

访问效果如下:

image

好了,今天这个资源搜索网站就搭建好了

麻雀虽小五脏俱全,这个案例还是具备很强的实践性和延展性的,后续可以做的事情有如下:

1)完善爬虫程序

2)实现一个独立的管理后台,管理爬虫数据和开放搜索服务数据同步

3)增加用户管理

4)增加广告等营收

【阿里云】2020双十一优惠:

https://www.aliyun.com/1111/new?userCode=fggt3m9n

 

【阿里云】永久优惠:

https://www.aliyun.com/minisite/goods?userCode=fggt3m9n


http://chatgpt.dhexx.cn/article/69FoDZbq.shtml

相关文章

5个在线资源搜索网站,用的人求生欲很强!

分享5个平时经常用的在线资源搜索网站,只有你想不到没有你找不到的资源!一起来了解下吧! 西林街搜索http://www.xilinjie.com/ 强烈推荐的资源搜索网站:视频、文库(文档、古籍、专业书籍、电子书[PDF、ePub、Mobi等格…

5个超厉害的资源搜索网站,每一款都可以让你的资源满满!

生活中我们无时不刻不都要在网站搜索资源,但就是缺少一个趁手的资源搜索网站,如果有一个比较好的资源搜索网站可以帮助我们节省一大半时间!今天小编在这里为大家分享5款超厉害的资源搜索网站,每一款都可以让你的资源丰富精彩&…

7个常用资源搜索网站推荐

说起搜索资源,大家肯定先想到百度,的确“度娘”很万能,能帮我们解决很多问题,但毕竟百度资源有限,用的人多了就造成重复的问题,接下来,小编给大家分享7个顶级资源搜索网站,能满足你很…

推荐3个搜索资源的网站,保存起来,用的时候方便找哦

互联网是一个自由分享的世界,但一旦真想找点资源又不容易找,一方面是现在有违规资源会被封,一方面信息时代信息爆炸,很难快速找到想要的内容。 今天分享3个网站,都可以搜索资源,是资源搜索的入口。 找到了…

免费分享6个资源搜索网站,不怕资源搜不到,没多少人知道这些

1、西林街搜索 西林街搜索,这个网站专注于盘类资源搜索,可以搜索各种文库、学术资料、视频、教程、音乐等,网站整体看起来十分简洁,而且主页的背景图片也会隔段时间自动更换。 网站链接↑↑↑ http://www.xilinjie.com/ 2、呆木瓜…

7个顶级资源搜索网站,不知道太可惜了!

说起搜索资源,大家肯定先想到百度,的确“度娘”很万能,能帮我们解决很多问题,但毕竟百度资源有限,用的人多了就造成重复的问题,接下来,小编给大家分享7个顶级资源搜索网站,能满足你很…

14个资源超级丰富的网站,个个精彩,绝对有你需要的!

如果你经历过找资源找不到情况,那么这篇文章就太适合你啦!今天分享得是14个超级好用的资源网站,涵盖了免费大学教材资源、影视、音乐、电子书、壁纸等各种你想要的资源内容, 看完记得收藏哦。 一、学习资源 1、超能搜 一个专门…

10个找资源必备的网站,精准搜索,想要的全都有

我们平时在网上搜索资源,就如同茫茫大海一般,下面我分享10个珍藏多年的资源网站,让你瞬间成为资源富人! 01*果汁排行榜(工具资源) 这是一个集合了百度、搜狗、谷歌等主流搜索引擎的导航网站,还…

【MyBatis】自定义映射resultMap

目录 1.使用全局配置处理字段名和属性名不一致的情况 2.resultMap处理字段和属性的映射关系 1.处理一对一映射 2.多对一映射处理 级联方式处理映射关系 使用association处理映射关系 分步查询 3.一对多映射处理 1.collection 2.分步查询 前期准备: 建立 t_…

浅谈MyBatis中的resultMap(个人总结)

官方文档: mybatis – MyBatis 3 | XML 映射器https://mybatis.org/mybatis-3/zh/sqlmap-xml.html“resultMap 元素是 MyBatis 中最重要最强大的元素......ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句&#…

resultMap和resultType的使用区别

如今从事编程工作也大半年了,还是弄不明白mybtis中resultMap和resultType到底怎么使用,看了众多资料,研究了公司和git上不少代码,发现了一些区别 在实体类中定义好了数据库字段,就可以不用resultMap,直接用…

mybatis的resultMap用法

目录 1.前言 2.准备工作 2.1 类型别名 2.2 列名和属性名 2.3 mybatis映射文件处理特殊字符 2.4 sql片段 2.5 mybatis完成模糊查询 3.结果映射(resultMap) 4. 联表查询 4.1 一对一关联association 4.2 一对多关联collection 5.鉴别器 1.前言 …

mybatis中resultMap的理解

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情。 实际上,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 R…

resultmap的用法

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查…

mybatis中resultMap配置细则

关注公众号【江南一点雨】,专注于 Spring Boot微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! resultMap算是mybatis映射器中最复杂的一个节点了,能…

深度解析resultMap标签

一般来说,一张表对应一份mapper映射文件,但部分属性在数据库中的存储并非直接存储其内容,而是存储其唯一标识,比如id,如下表中的员工政治面貌、部门、职级、岗位均是通过各个分表的id进行维护: 因此&#x…

ResultType和ResultMap的区别

ResultType和ResultMap都是执行查询语句时返回的结果集 ResultType ResultType相对与ResultMap而言更简单一点。只有满足ORM(Object Relational Mapping,对象关系映射)时,即数据库表中的字段名和实体类中的属性完全一致时&#x…

resultMap的用法以及关联结果集映射

resultType resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。 如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结…

[MyBatis]-resultMap结果映射集详解

resultMap结果映射集详解 resultmap是mybatis中最复杂的元素之一,它描述如何从结果集中加载对象,主要作用是定义映射规则、级联的更新、定制类型转化器。 resultmap构成元素 元素子元素作用constructoridArg 、arg用于配置构造器方法id将结果集标记为id…

MyBatis中ResultMap详解

简介: MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis会自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候&#xff0…