搜尋引擎背後的原理和中文日誌檢索

2021-08-19 13:10:49 字數 2129 閱讀 3148

摘要: 日誌服務支援的兩種搜尋方式 通過設定分詞字元(通常是標點符號),把一段文字劃分成不同的單詞。分詞字元只能是單位元組ascii字元這種方式適合於切分英文單詞。這種方式對於中文日誌,必須要搜尋中文語句整體。

搜尋引擎背後的原理和日誌檢索

當我們在搜尋引擎搜尋乙個詞的時候,背後是上千臺機器在為我們工作。那麼搜尋引擎是如何從數萬億的網頁中瞬間查詢到我們想要的詞的呢?這裡要介紹乙個概念叫倒排索引。

倒排索引

倒排索引指的是,把文件拆分成乙個個單詞,每個單詞指向包含該單詞的文件id。在查詢時,根據關鍵字,找到包含該關鍵字的文件id列表。再根據id讀取具體的資料。

以英文為例,下面是要被索引的文字:

t0 = "it is what it is"

t1 = "what is it"

t2 = "it is a banana"

我們就能得到下面的反向檔案索引:

"a":      

"banana":

"is":

"it":

"what":

查詢what這個詞時,我們找到了0,1這兩個id,然後知道了t0和t1這兩個文件包含what這個詞。

由上文的介紹可知,建立倒排索引的關鍵在於分詞。對於英文和中文,分詞方式又有區別。

英文分詞

英文語句,每個單詞之間有標點符號分割,因此我們把標點符號設定為分詞字元,標點符號之間的字串即為乙個單詞。

例如語句

it is what it is.what is it?it is a banana!

如果分詞字元是空格和. ? ! 那麼能夠得到的單詞依次是it,is,what,it,is,what,is,it,it,is,a,banana

如果分詞字元是空格和.? 不包含! 那麼能夠得到的單詞依次是it,is,what,it,is,what,is,it,it,is,a,banana!

我們得到banana!這樣乙個特殊的詞,在查詢時如果查詢banana是無結果的,比如查詢banana!才行

配置分詞字元,請在查詢分析屬性中配置:

中文分詞

中文分詞的困難

中文語句不同於英文語句,英文的每個單詞之間有標點符號分割,中文的單詞和單詞之間是連線在一起的。中文單個字沒有意義,只有和相鄰的字組成詞彙時,才有意義。例如語句:

中國是乙個偉大的國家,中國共產黨是乙個偉大的政黨
每個字表達的含義沒有意義,只有組合成詞彙,才能理解其中的含義。中文博大精深,不同的字有不同的組合方式,在不同的語境下,詞的長度也不一樣。人類能夠快速的分析出這句話所包含的詞:

中國 是 乙個 偉大 的 國家 中國共產黨 是 乙個 偉大 的 政黨
兩句話中的中國,在前一句中是單獨乙個詞,在後一句中要和之後的共產黨組成乙個詞。

中英文混合日誌

針對包含中文的日誌,例如debug message:登入成功號是中文冒號,配置的分詞字元是空格。如果只採用分詞字元的方式分詞,那麼得到的詞有:

debug message:登入成功
無法單獨搜尋登入或成功,只有完整輸入message:登入成功才能搜尋到日誌。

智慧型化中文分詞

為了解決中文的分詞問題,我們引入了智慧型化的分詞演算法。

如果日誌中包含中文,那麼需要開啟開關,引入智慧型化分詞,才能夠搜尋中文單詞。

開啟後中文開關後,我們分別可以查詢debug,message,登入,成功。

中文搜尋效果:

搜尋引擎原理

乙個搜尋引擎由搜尋器 索引器 檢索器和使用者介面等四個部分組成。1.搜尋器 搜尋器的功能是在網際網路中漫遊,發現和蒐集資訊。它常常是乙個電腦程式,日夜不停地執行。它要盡可能多 盡可能快地蒐集各種型別的新資訊,同時因為網際網路上的資訊更新很快,所以還要定期更新已經蒐集過的舊資訊,以避免死連線和無效連線...

中文分詞和搜尋引擎

搜尋引擎,上網的人基本上都不陌生了,cnnic的第17次 網際網路調查報告 顯示,使用搜尋引擎服務的網民,僅次於電子郵件。中文分詞,估計了解的人並不多,畢竟太技術,太底層。但中文分詞是中文搜尋引擎系統中非常重要的模組,這裡之所以強調是中文搜尋引擎,是針對英文搜尋引擎來講,因為對於英文來說,空格代表詞...

中文分詞和搜尋引擎

winter 搜尋引擎,上網的人基本上都不陌生了,cnnic的第17次 網際網路調查報告 顯示,使用搜尋引擎服務的網民,僅次於電子郵件。中文分詞,估計了解的人並不多,畢竟太技術,太底層。但中文分詞是中文搜尋引擎系統中的非常重要的模組,這裡之所以強調是中文搜尋引擎,是針對英文搜尋引擎來講,因為對於英文...