mysql 分词搜索_打造一个蓝奏云网盘搜索引擎
目前存在的網盤搜索引擎好多,可以歸于兩類:
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,使用西瓜皮作為爬蟲框架,一共有三臺服務器分布式爬取,由于藍奏的種種限制,目前資源入庫的速度還算是理想。這里有一點需要說明,爬蟲和分詞并不是實時響應的,每爬取一段時間后,服務器會進行分詞處理,資源存在一定的滯后,這個后期會在優化這個滯后的時間。
總結
以上是生活随笔為你收集整理的mysql 分词搜索_打造一个蓝奏云网盘搜索引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 塞尔达雷龙不出来怎么办
- 下一篇: try except python3.7