打造一個藍(lán)奏云網(wǎng)盤搜索引擎
時間:2023-03-27 09:48:01 | 來源:電子商務(wù)
時間:2023-03-27 09:48:01 來源:電子商務(wù)
目前存在的網(wǎng)盤搜索引擎好多,可以歸于兩類:
1.搜索引擎索引
2.爬蟲入庫索引
第一種:搜索引擎索引
這種索引方式是目前比較主流的方式,依靠百度,谷歌建立索引鏈接,當(dāng)用戶進(jìn)行搜索的時候,網(wǎng)盤搜索引擎會抓取谷歌和百度已經(jīng)收錄的頁面然后反饋給用戶。
第二種:爬蟲入庫索引
通過爬蟲(python或者其他語言)進(jìn)行對網(wǎng)盤站點(diǎn)的資源爬取,將資源統(tǒng)一存放到數(shù)據(jù)庫,通過分詞將搜索結(jié)果展現(xiàn)給用戶。
這兩種方式各有優(yōu)缺點(diǎn),第一種屬于間接搜索,如果搜索引擎不收錄該站點(diǎn)資源,那么將無從搜索。第二種屬于直接搜索,資源準(zhǔn)確度較高,但是實(shí)時更新速度比不上第一種。
下面進(jìn)入主題,說說塵心盤搜索的技術(shù)搜索模式
地址:https://pan.ischenxin.com/
很早之前就想打造一個藍(lán)奏云的網(wǎng)盤搜索引擎,無奈之前時間一直不充裕,終于有時間可以做開發(fā)了。
藍(lán)奏云的優(yōu)點(diǎn):不限速速度快。
藍(lán)奏云的缺點(diǎn):非會員上傳限制100M
缺點(diǎn)導(dǎo)致資源不會太大,視頻內(nèi)容肯定就非常少了,但其他類的資源,比如app,音樂,小說肯定非常豐富。
由于藍(lán)奏云的Robots限制了百度對其網(wǎng)頁的收錄,使用百度高級搜索語法是沒有搜索結(jié)果的,但是谷歌就可以搜索到。
本身也沒有想著使用搜索引擎的方式去做引擎,只是抱著嚴(yán)謹(jǐn)?shù)膽B(tài)度搜索看一看。
廢話太多,下面進(jìn)入主題。
技術(shù)架構(gòu):
1.前端使用Vue+Element UI ,本身前端不復(fù)雜,就沒有使用webpack打包
2.后端使用了PHP+Apache+Mysql 經(jīng)典的后端組合
3.分詞引擎使用了國人開源的xunsearch 漢語嘛 當(dāng)然是國人最懂漢語了
4.爬蟲使用了基于python的Scrapy 分布式進(jìn)行資源的爬取
整套系統(tǒng)的復(fù)雜點(diǎn)在于分詞,因?yàn)閿?shù)據(jù)庫存儲資源后,由于數(shù)據(jù)的龐大,若使用數(shù)據(jù)庫查詢語句 like,效率和吞吐量肯定滿足不了。此時分詞的重要性就顯得非常重要了,將數(shù)據(jù)庫存儲標(biāo)題的字段進(jìn)行分詞,然后建立全文索引鏈,這樣大大提高了搜索速度和吞吐量。
雖然mysql目前是支持中文的全文索引的,但是效率和分詞的結(jié)果非常不理想,尋找了幾個分詞引擎,最后選擇了xunsearch,百萬級搜索速度只有幾毫秒,有需要的朋友可以百度xunsearch了解下,使用并不復(fù)雜,文檔寫的有點(diǎn)亂,還是需要認(rèn)真多分析幾遍的。
爬蟲還是萬年不變的python,使用西瓜皮作為爬蟲框架,一共有三臺服務(wù)器分布式爬取,由于藍(lán)奏的種種限制,目前資源入庫的速度還算是理想。這里有一點(diǎn)需要說明,爬蟲和分詞并不是實(shí)時響應(yīng)的,每爬取一段時間后,服務(wù)器會進(jìn)行分詞處理,資源存在一定的滯后,這個后期會在優(yōu)化這個滯后的時間。