Solr--全文索引原理

在一些大型的門戶網站和電商網站中,都有自己的站內搜索,但是使用傳統的數據庫查詢方式已經無法滿足一些高級的搜索要求,比如說:搜索速度要快、搜索結果要按照相關度排序,搜索的內容格式不固定,這些都需要使用全文實現搜索功能。

什麼是全文搜索?


  • 信息檢索 我們先要知道信息檢索:從信息集合中找出與用戶需求相關的信息,檢索的信息包括:文本,圖像,音頻,視頻等信息。而全文檢索是信息檢索其中的一類。

全文檢索:是計算機索引程序掃描文章中的每一個詞,對每一個詞都建立索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先建立的檢索進行查找,並將查找結果返回給用戶。 數據檢索:例如,數據均按”時間、人物、地點、事件”的形式存儲,查詢可以爲地點=“北京”,數據檢索的性能取決於所使用的標識字段的方法和用戶對這種方法的理解,有很大的侷限性。

  • 全文檢索 舉個栗子:當我們去圖書館借書的時候,肯定不會說是去一本一本你的去翻看然後找自己感興趣的書籍,我的天哪,這得找到猴年馬月。

所以我們進圖書館的時候一般都會先去查閱數據的索引卡,或者索引標誌,找到相應的書籍;所以當一本書進入圖書館之後,最重要的就是建立索引卡,同樣,對於我們所擁有的信息,也需要建立索引。 建立索引,就是對待搜索的信息進行一定的分析,並將分析結果按照一定的組織方式存儲起來,通常將這些結果存儲在文件中。存儲分析結果的文件的集合就是索引。在查詢時,先從索引中查找,由於索引是有一定的結構組織的,所以查詢的速度非常快。

上圖就是建立索引的過程,先對信息進行採集(如果信息檢索系統在用戶發出檢索請求後再去互聯網上找答案,根本無法再有限的時間返回結果),然後對信息進行加工,建立索引。在Internet上採集信息的軟件被稱爲爬蟲或者蜘蛛或者網絡機器人。爬蟲在Internet上訪問每一個網頁,沒訪問一個網頁就把其中的內容傳回本地服務器。爬蟲的原理可以去看看這篇文章網絡爬蟲基本原理(一)

倒排索引結構


一開始有點蒙,倒排序怎麼個倒排序,那正排序又是什麼?後來在網上找到一篇文章,正排索引和倒排索引

正排索引

主要的意思就是說,當網絡爬蟲在Internet上收集信息的時候,會把收集到的網頁進行處理,就是把對網頁的內容進行分詞(關鍵詞),可以看成這樣:

網頁

關鍵詞

網頁A=

關鍵詞1+關鍵詞2+關鍵詞3+關鍵詞4+關鍵詞5+關鍵詞6+關鍵詞7+…….

網頁B=

關鍵詞1+關鍵詞2+關鍵詞3+關鍵詞4+關鍵詞5+關鍵詞6+關鍵詞7+…….

網頁C=

關鍵詞1+關鍵詞2+關鍵詞3+關鍵詞4+關鍵詞5+關鍵詞6+關鍵詞7+…….

具體怎麼分詞大家可以去了解了解分詞器,中文的分詞和英文的分詞是不一樣的。原理如下:

正如上面的這個過程,把一個網頁分成一個個的關鍵詞的過程就是一個正排索引的過程。

倒排索引

用戶查信息的時候,一般都是通過關鍵詞來查詢相應的信息。

倒排索引是這樣的,倒排索引這個關鍵詞之後跟了一堆網頁。

關鍵詞

網頁

關鍵詞1=

網頁A+網頁B+網頁C+網頁O+…….

關鍵詞2=

網頁B+網頁P+網頁Z+…….

關鍵詞3=

網頁D+網頁T+網頁Y+網頁Z+…..

而solr就是一個基於Lucene的Java全文搜索引擎服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章