目前存在的网盘搜索引擎好多,可以归于两类:
1.搜索引擎索引
2.爬虫入库索引
第一种:搜索引擎索引
这种索引方式是目前比较主流的方式,依靠百度,谷歌建立索引链接,当用户进行搜索的时候,网盘搜索引擎会抓取谷歌和百度已经收录的页面然后反馈给用户。
第二种:爬虫入库索引
通过爬虫(python或者其他语言)进行对网盘站点的资源爬取,将资源统一存放到数据库,通过分词将搜索结果展现给用户。
这两种方式各有优缺点,第一种属于间接搜索,如果搜索引擎不收录该站点资源,那么将无从搜索。第二种属于直接搜索,资源准确度较高,但是实时更新速度比不上第一种。
下面进入主题,说说尘心盘搜索的技术搜索模式
地址:https://pan.ischenxin.com/
很早之前就想打造一个蓝奏云的网盘搜索引擎,无奈之前时间一直不充裕,终于有时间可以做开发了。
蓝奏云的优点:不限速速度快。
蓝奏云的缺点:非会员上传限制100M
缺点导致资源不会太大,视频内容肯定就非常少了,但其他类的资源,比如app,音乐,小说肯定非常丰富。
由于蓝奏云的Robots限制了百度对其网页的收录,使用百度高级搜索语法是没有搜索结果的,但是谷歌就可以搜索到。
本身也没有想着使用搜索引擎的方式去做引擎,只是抱着严谨的态度搜索看一看。
废话太多,下面进入主题。
技术架构:
1.前端使用Vue+Element UI ,本身前端不复杂,就没有使用webpack打包
2.后端使用了PHP+Apache+Mysql 经典的后端组合
3.分词引擎使用了国人开源的xunsearch 汉语嘛 当然是国人最懂汉语了
4.爬虫使用了基于python的Scrapy 分布式进行资源的爬取
整套系统的复杂点在于分词,因为数据库存储资源后,由于数据的庞大,若使用数据库查询语句 like,效率和吞吐量肯定满足不了。此时分词的重要性就显得非常重要了,将数据库存储标题的字段进行分词,然后建立全文索引链,这样大大提高了搜索速度和吞吐量。
虽然mysql目前是支持中文的全文索引的,但是效率和分词的结果非常不理想,寻找了几个分词引擎,最后选择了xunsearch,百万级搜索速度只有几毫秒,有需要的朋友可以百度xunsearch了解下,使用并不复杂,文档写的有点乱,还是需要认真多分析几遍的。
爬虫还是万年不变的python,使用西瓜皮作为爬虫框架,一共有三台服务器分布式爬取,由于蓝奏的种种限制,目前资源入库的速度还算是理想。这里有一点需要说明,爬虫和分词并不是实时响应的,每爬取一段时间后,服务器会进行分词处理,资源存在一定的滞后,这个后期会在优化这个滞后的时间。