2020最新 使用阿里雲開放搜索服務快速搭建資源搜索網站

一晃這麼多年過去,嘿嘿嘿的東西依然喜歡,但世間卻變化萬千

資源種類已不僅僅是X片,高清電影、紀錄片、無損音樂、美劇、大型軟件等等,似乎更加吸引

資源呈現方式也百花齊放,從最早的BT文件、電驢地址,到現在的磁鏈地址、各種雲盤等等

而傳統的P2P下載方式也變得格格不入,因爲硬盤容量已經大到但凡大一點雲存儲服務商都把所有資源緩存在自己的服務器上,進行哈希匹配後直接提供離線下載資源(這也直接導致快播王欣被抓)

因此,作爲資源的入口,電驢地址和磁鏈地址依然有着強大的生命力,受益於各商家龐大的離線存儲,電驢、磁鏈地址已經近乎等同於直接的HTTP地址,並且有着比HTTP地址更友好的通用性。

隨手百度一下BT搜索、磁鏈搜索關鍵詞,就會出來很多類似的搜索網站,比如以下這些

image

image

而今天,我們也來搭建一個類似的網站,只不過

藉助新技術,不僅搭建過程更加簡化建設思路也能有所革新,所以今天文章的主題就是:

使用阿里雲開放搜索服務快速搭建資源搜索網站

先看一下最終的建設效果(訪問地址:https://sodemo.alphams.cn/

image

那麼下面我們就一步一步來搭建這個簡單的資源搜索網站

一、搭建前的一些準備和分析

資源搜索網站有如下幾個關鍵點:

1、原始數據

沒有個幾百萬條初始搜索數據,都不好意思和別人說是做資源站的,在這個案例裏面,我們採用了simplecd官方製作的電驢地址打包,雖然年代比較久遠,但也有百萬條左右,下載地址爲:

https://www.douban.com/group/topic/17230136/

請注意保護版權!

2、數據存儲與檢索

十多年前資源的數量以百萬計算,現在一個飽滿的資源站的資源數量應該早已過億,數據庫大小也應該在50G以上,這樣的數據,使用阿里雲RDS MySQL數據庫具有較高的性價比,數據量再大一些還可以結合DRDS分佈式數據庫一同使用

對於具體的檢索技術,不同的數據庫的全文索引、分詞等技術各不相同,甚至連MySQL的各種版本之間的處理都有區別,而由於數據庫我是確實不會。。要是會的話就不至於一直用Linq ORM了。。我想象中的100萬條數據全文檢索的速度應該在0.01秒左右,但自己操作MySQL進行配置和優化,始終達不到這樣的查詢效率

因此今天這裏選擇了阿里雲的開放搜索服務,讓阿里雲來處理這些難點。

這也是今天的一個主要講解重點,實測證明,確實檢索效率很高!

阿里雲2000元優惠禮包領取

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)增加廣告等營收

那麼對今天這個案例的總結是:

今天的案例,可以說是一種全新的數據檢索思路,成功的把部分面向數據庫、面向技術的業務場景,轉變爲了面向服務、面向用戶,以我自己爲例,非常精通數據爬蟲,精通資源,但對數據庫技術並不在行,在不需要學習很深的數據庫知識和技巧的情況下,阿里雲開放搜索服務成功的幫助我將百萬條數據的全文檢索時間降低到了0.01秒,這不是傳統的通過升級數據庫配置、增加集羣能解決的(花費上也不合理)。而我也堅信,這種思路,絕對不是阿里雲官方Demo裏面所說,可以用於論壇搜索這麼簡單,一定有更廣闊的應用。所以,寫了這麼一個小案例,希望能夠拋磚引玉,激發大家的靈感,做出更多創新。

本項目源碼下載:https://github.com/chumakeji/resourcesearch

阿里雲2000元優惠禮包領取​​​​​​​