焦萍萍
摘要:隨著學(xué)校數(shù)字化建設(shè)的加快,校園的各種信息也不斷增加,對(duì)信息進(jìn)行查找和定位也逐漸變得的困難。大多學(xué)校還是使用一般搜索引擎進(jìn)行站內(nèi)信息的搜索,利用這樣的搜索引擎一般不能及時(shí)地得到新消息。而且如果一些學(xué)校使用的二級(jí)域名或是用,P地址直接作為網(wǎng)站,那么很難被通用的搜索引擎給搜索到。所以本文將基于Python技術(shù)對(duì)校園的搜索引擎進(jìn)行分析,提供一些設(shè)計(jì)方案僅供參考。
關(guān)鍵詞:校園搜索引擎;python技術(shù);設(shè)計(jì)
當(dāng)今時(shí)代是一個(gè)信息化的社會(huì),人們通過互聯(lián)網(wǎng)可以看到各種信息,隨著互聯(lián)網(wǎng)的普遍使用,網(wǎng)絡(luò)信息也不斷地增長。想要提高信息搜索的效率,主要的就是對(duì)搜索引擎進(jìn)行改進(jìn)。而隨著校園的信息化建設(shè),建立一個(gè)高效搜索引擎變得非常重要。所以,本文將結(jié)合python語言對(duì)搜索引擎的設(shè)計(jì)進(jìn)行分析,探討一下該語言在校園網(wǎng)中的建設(shè)。
1.搜索引擎建立的流程分析
1.1框架的分析
建立校園搜索引擎首先就是要進(jìn)行設(shè)計(jì)流程的分析;其次就是分析Python語言中Scrapy相關(guān)的開源爬蟲結(jié)構(gòu)設(shè)計(jì),其中在Scrapy爬蟲框架中有關(guān)URL的去重功能的分析;再則就是基于Python語言中關(guān)于Whoosh索引檢索庫的分析;最后就是對(duì)建立的系統(tǒng)進(jìn)行測試。
根據(jù)多種的搜索引擎設(shè)計(jì)案例,總結(jié)出設(shè)計(jì)搜索引擎的基本流程:首先就是建立一個(gè)文件集合(collection),之后利用索引器(indexer)對(duì)這些文件進(jìn)行索引建設(shè)。接著用戶就可以進(jìn)行關(guān)鍵詞(query)的輸入,這樣系統(tǒng)就可以利用索引進(jìn)行檢索。而且索引模塊可以對(duì)查詢的結(jié)果進(jìn)行分析排序,最后將搜索結(jié)果按照用戶的要求進(jìn)行排列呈現(xiàn)出來。在這之前要通過網(wǎng)絡(luò)爬蟲程序?qū)⑦@些集合文件下載好。因此,建立搜索引擎需要完成這幾個(gè)模塊:首先就是網(wǎng)絡(luò)爬蟲系統(tǒng)的建立,其次就是索引查詢系統(tǒng)的建立,最后就是顯示答案的模塊。
1.2網(wǎng)絡(luò)爬蟲
在1993年,“互聯(lián)網(wǎng)漫游者”誕生,它是世界上首個(gè)網(wǎng)路爬蟲程序,也被稱為是網(wǎng)絡(luò)機(jī)器人。網(wǎng)絡(luò)爬蟲通過利用圖論中的遍歷算法對(duì)互聯(lián)網(wǎng)中的大量信息進(jìn)行下載,在建立搜索引擎時(shí),是不可缺少圖論的遍歷算法的。該方法是將互聯(lián)網(wǎng)比作一個(gè)大圖,將每個(gè)網(wǎng)頁作為一個(gè)點(diǎn),通過每個(gè)網(wǎng)頁中的超鏈接,就可以將它們相互連接起來了。
寬度優(yōu)先搜索(BFS),也可以稱為是廣度的優(yōu)先搜索,它也是屬于通圖中的一種遍歷對(duì)策。首先建立一張圖對(duì)該算法進(jìn)行分析。如圖1所示。
如果想要得到V0到V6之間最短的路徑,那么就是分析與V0各個(gè)連接的節(jié)點(diǎn),分別是V1、V2、V3,之后分析和三者相連的節(jié)點(diǎn)有:{V0、V4},{V0、V1、V6},{V0、V1、V5},將我們已經(jīng)分析過的節(jié)點(diǎn)V1、V2、V3進(jìn)行排除,那么就剩下V4、V6、V5,之后通過找出與V2的連接點(diǎn)V6,就可以得出一條路徑:VO-V2-V6,然后再尋找V5的連接點(diǎn),就可以得到另外一個(gè)路徑:VO-V3-V5-V6,但是這條路徑不是所要的最短路徑。這些就是寬度搜索的基本邏輯,但是該訪問方式比較消耗內(nèi)存。
深度優(yōu)先搜索(DFS)方式,它是和廣度搜索相反,它是“一條道走到黑”的邏輯。詳細(xì)來說就是當(dāng)訪問走到頭,就去訪問其他相鄰的節(jié)點(diǎn),假如有很多節(jié)點(diǎn),那么訪問左邊的節(jié)點(diǎn),直到?jīng)]有別的節(jié)點(diǎn),然后在進(jìn)行其他節(jié)點(diǎn)的訪問。這種搜索選擇邏輯效率比較慢,但是它可以和廣度有限搜索相結(jié)合,如此可以實(shí)現(xiàn)優(yōu)勢互補(bǔ)的效果。
非完全的PageRank邏輯選擇:它是屬于連接分析算法,主要是分析網(wǎng)頁重要性的。所以,在進(jìn)行網(wǎng)頁優(yōu)先等級(jí)選擇時(shí)可以利用PageRank邏輯進(jìn)行分析:將下載好的網(wǎng)頁,和需要獲取的網(wǎng)頁組成一個(gè)集合,之后在利用PageRank邏輯進(jìn)行計(jì)算。計(jì)算完之后,將獲取的URL根據(jù)PageRank計(jì)算出的得分高低進(jìn)行排列,然后爬蟲就在這些排列中進(jìn)行URL列表的搜索。
1.3搜索引擎的索引
索引的核心部分就是進(jìn)行布爾集合運(yùn)算,不管搜索引擎多么的智能,它的基礎(chǔ)都是運(yùn)用布爾運(yùn)算。在布爾運(yùn)算中主要使用0個(gè)1兩個(gè)值,具有三種邏輯:OR、AND、NOT。