搜索引擎初探,人人都能做一款自己的搜索引擎

"百度一下,你就知道"。這句耳熟能詳的話語背後,說的就是搜索引擎。搜索引擎,並不是一個特別新的概念,早在1990年,萬維網還沒有出現的時候,就由美國一個大學幾個普通的學習做出來一個能索引搜索文件的系統。而在今年,谷歌搜索、百度搜索也是世界上使用頻率最高的搜索系統,除此之外,還有非常多的搜索引擎,儘管搜索引擎各式各樣,但是他們的原理跟步驟都是差不多的,今天我們來簡單地介紹介紹,一個搜索引擎大致的架構與工作的流程。

搜索引擎初探,人人都能做一款自己的搜索引擎

首先是元數據收集,沒有數據,搜索什麼?這個收集的方式有很多種,如果我們是搜索互聯網上面的網頁,那麼我們可能需要一些爬蟲軟件去爬取數據,爬取到數據之後呢,我們要對關鍵信息進行提取,大部分網頁上面都是HTML的結構,我們只需要正文的內容就行了,向一些導航欄呀,側邊欄呀,能夠提取的有效價值並不高。如果我們只是建一個自己文章的搜索引擎,那就更加簡單了,可以直接使用所有文章的文件內容,無需去實現爬蟲。

搜索引擎初探,人人都能做一款自己的搜索引擎

接下來是索引,因為整個文章可能非常的長,我們不可能每次搜索都進行全文的對比,所以我們常常對文章進行分詞,建立對應的關鍵字索引。網上已經有很多開源的工具分詞工具可以使用,例如Java語言的word,有興趣的話大家可以瞭解下。這裡有一個簡單的細節優化,有一些詞是不用建立索引的,例如你,我,他,是之類的詞語,太普遍了,價值並不是很高,反而是一些專有名詞,如算法、數據結構、架構師這類的詞語價值更高。這裡我們可以簡單存儲為下面的格式。


搜索引擎初探,人人都能做一款自己的搜索引擎


我們簡單地使用3張表進行存儲,地址表、單詞列表、還有單詞與地址的關係表。每次有一個查詢,我們就先找單詞表,然後再找到單詞與連接表中所有的關係,然後返回對應的地址列表即可。

接下來我們會有一個問題,我們搜索到很多很多的東西,如何展示給用戶呢?例如某個關鍵詞,可能搜索出10萬個不同的網頁,到底用戶需要哪一個呢?這個時候就需要進行搜索排名了。常見的搜索排名有哪些呢?例如:

1.關鍵字的出現頻率,出現的越多次,得分越高。

2.關鍵字出現的時機,越早出現得分越高,出現的越均勻,等分越高

3.內容的創建時間,這個比較適合新聞類的搜索。

當然還有很多種,例如有些搜搜引擎公司誰給的錢多,誰就排在前面。

搜索引擎初探,人人都能做一款自己的搜索引擎

基本上,用了實現了這三步,一個簡單的搜索引擎就完成了。但這遠遠不夠,在今天這個時代,我們肯定希望搜索引擎越來越聰明!用AI武裝到牙齒!今天,我們也經常用神經網絡算法來優化我們的搜索引擎,我們可以把用戶的搜索的關鍵字作為神經網絡的輸入,把用戶最終的點擊結果作為神經網絡的輸出,這樣子反覆訓練,我們的搜搜系統就會越來越智能!

搜索引擎初探,人人都能做一款自己的搜索引擎

當然,現實中,搜索引擎是比這個複雜地多了,畢竟有海量的查詢跟存儲都需要優化,索引、排名的算法各家也有各家的特色,後面我們可以講一講一些常見的內容。說點題外話,相信你讀到這裡,你會對現網百度的困境也多了一些理解,為什麼進入移動互聯網時代後百度越來越困難,主要表現在第1跟第4點,首先是百度能獲取到的數據越來越少了,其次是用戶使用百度的頻率也降低,惡性循環,百度也越來越難以掌握用戶的動機了。

好了今天我的介紹就到這裡了,後面我們會用具體的代碼來簡單實現一下,如果你有興趣,那就關注我吧。

相關推薦

推薦中...