php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...
生活随笔
收集整理的這篇文章主要介紹了
php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
來源 |?后端技術(shù)指南針頭圖 | 圖蟲
抓取網(wǎng)頁:https://tech.huanqiu.com/article/3zMq4KbdTAA可以看到分詞后可以標(biāo)注詞頻,這些都是后續(xù)作為網(wǎng)頁排序的重要來源,但是中文是很復(fù)雜的,因此分詞算法會有很多種,常見的包括:
寫在前面
今天準(zhǔn)備和盆友們一起學(xué)習(xí)下關(guān)于通用搜索引擎的一些技術(shù)點(diǎn)。
鑒于搜索引擎內(nèi)容非常多,每一部分都夠?qū)懞脦灼恼碌乃员疚闹皇菕伌u引玉,深入挖掘還得老鐵們親力親為。
通過本文你將對通用搜索引擎的基本原理和組成有一個(gè)較為清晰的認(rèn)識,用心讀完,肯定有所收獲!
廢話不說,各位抓緊上車,沖鴨!
初識搜索引擎
2.1 搜索引擎分類
搜索引擎根據(jù)其使用場景和規(guī)模,可以簡單分為兩大類:
通用搜索引擎
通用搜索又稱為大搜,諸如谷歌、百度、搜狗、神馬等等都屬于這一類。
垂直搜索引擎
垂直搜索又稱為垂搜,是特定領(lǐng)域的搜索,比如用QQ音樂搜周杰倫的歌等。
兩類搜索引擎雖然數(shù)據(jù)規(guī)模和數(shù)據(jù)特征不一樣,但都是為了填平用戶和海量信息之間的鴻溝。
2.2 搜索和推薦
搜索和推薦經(jīng)常被相提并論,但是二者存在一些區(qū)別和聯(lián)系。
- 共同點(diǎn)
宏觀上來說,搜索和推薦都是為了解決用戶和信息之間的隔離問題,給用戶有用的/需要的/喜歡的信息。 - 區(qū)別點(diǎn)
搜索一般是用戶主動觸發(fā),按照自己的意圖進(jìn)行檢索,推薦一般是系統(tǒng)主動推送,讓用戶看到可能感興趣的信息。
2.3 搜索引擎評價(jià)標(biāo)準(zhǔn)
我們每天都和搜索引擎打交道,評價(jià)一個(gè)搜索引擎的好壞可簡單概括為:精準(zhǔn)性、時(shí)效性、響應(yīng)速度、權(quán)威性等。換句話說,搜索引擎懂得用戶真正想要找什么,可以快速準(zhǔn)確地展示出來,對于一些熱點(diǎn)突發(fā)信息也可以及時(shí)收錄展示,就能很好地博得用戶。這個(gè)目標(biāo)需要搜索引擎多個(gè)模塊協(xié)作處理,是個(gè)復(fù)雜的系統(tǒng)工程,并非易事。通用搜索引擎的整體概覽
3.1 搜索引擎的基本流程
大白嘗試用樸實(shí)的語言來整體表達(dá)下,通用搜索引擎大致是怎么工作的:1. 網(wǎng)絡(luò)蜘蛛爬蟲每天不辭辛苦地收錄網(wǎng)頁,然后存儲起來,這樣各個(gè)站點(diǎn)的頁面就有了一份份鏡像,這個(gè)規(guī)模是百億/千億級的。2. 單純地鏡像也不能直接用,需要加工處理,把一個(gè)個(gè)網(wǎng)頁進(jìn)行分詞,建立搜索詞和網(wǎng)頁的對應(yīng)關(guān)系,這樣用戶搜索某個(gè)東西時(shí),才會拿到很多相關(guān)的網(wǎng)頁。3. 比如"搜索隱秘的角落"可能會有100個(gè)相關(guān)網(wǎng)頁被找到,但是網(wǎng)頁和檢索詞的關(guān)聯(lián)性肯定有強(qiáng)有弱,因此還需要進(jìn)行網(wǎng)頁的排序,排序策略有很多,最終把優(yōu)質(zhì)的網(wǎng)頁排在前面展示給用戶。用戶看到相關(guān)結(jié)果之后,進(jìn)行點(diǎn)擊或者跳過,搜索引擎根據(jù)用戶的相關(guān)動作進(jìn)行調(diào)整,實(shí)現(xiàn)整個(gè)閉環(huán)過程。4. 為了能更好地理解用戶的真實(shí)用途,需要進(jìn)行檢索詞的意圖理解、詞條切分、同義詞替換、語法糾錯等處理,再根據(jù)這些檢索詞去獲取數(shù)據(jù),為用戶找到心中所想的網(wǎng)頁。比如檢索詞為"老鷹",可能是自然界的老鷹,也可能是NBA的一只球隊(duì):3.2 搜索引擎的基本組成
我們從整體簡單看下基本組成以及各個(gè)模塊的主要功能:- 網(wǎng)絡(luò)爬蟲模塊
搜索引擎中的網(wǎng)絡(luò)爬蟲就是網(wǎng)頁的搬運(yùn)工,負(fù)責(zé)將互聯(lián)網(wǎng)上允許被抓取的網(wǎng)頁進(jìn)行下載,如果把搜索引擎看作一家餐廳,網(wǎng)絡(luò)爬蟲模塊就是餐廳的采購員。 - 內(nèi)容處理模塊
負(fù)責(zé)將網(wǎng)絡(luò)爬蟲下載的頁面進(jìn)行內(nèi)容解析、內(nèi)容清洗、主體抽取、建立索引、鏈接分析、反作弊等環(huán)節(jié)。 - 內(nèi)容存儲模塊
存儲模塊是搜索引擎的堅(jiān)強(qiáng)后盾,將抓取的原始網(wǎng)頁、處理后的中間結(jié)果等等進(jìn)行存儲,這個(gè)存儲規(guī)模也是非常大的,可能需要幾萬臺機(jī)器。 - 用戶解析模塊
用戶模塊負(fù)責(zé)接收用戶的查詢詞、分詞、同義詞轉(zhuǎn)換、語義理解等等,去揣摩用戶的真實(shí)意圖、查詢重點(diǎn)才能返回正確的結(jié)果。 - 內(nèi)容排序模塊
結(jié)合用戶模塊解析的查詢詞和內(nèi)容索引生成用戶查詢結(jié)果,并對頁面進(jìn)行排序,是搜索引擎比較核心的部分。
網(wǎng)絡(luò)爬蟲模塊簡介
網(wǎng)絡(luò)爬蟲模塊是通用搜索引擎非常的基礎(chǔ)組件,一般都會采用分布式爬蟲來實(shí)現(xiàn),我們來看看這個(gè)搬運(yùn)工是如何實(shí)現(xiàn)海量網(wǎng)頁發(fā)掘的:網(wǎng)絡(luò)爬蟲的基本流程:- 將熱門站點(diǎn)的優(yōu)質(zhì)URL作為種子,放到待抓取的URL隊(duì)列中
- 讀取待抓取URL獲取地址進(jìn)行下載
- 將下載的網(wǎng)頁內(nèi)容進(jìn)行解析,將網(wǎng)頁存儲到hbase/hdfs等,并提取網(wǎng)頁中存在的其他URL
- 發(fā)掘到新的URL進(jìn)行去重,如果是未抓取的則放到抓取隊(duì)列中
- 直到待抓取URL隊(duì)列為空,完成本輪抓取
網(wǎng)頁內(nèi)容處理模塊
爬蟲模塊將網(wǎng)頁內(nèi)容存儲之后,網(wǎng)頁內(nèi)存處理模塊開始解析網(wǎng)頁內(nèi)容,主要工作包括:數(shù)據(jù)清洗、網(wǎng)頁內(nèi)容分詞、建立正排索引、建立倒排索引等。5.1 數(shù)據(jù)清洗
一般來說,網(wǎng)頁中除了具體內(nèi)容還會有很多無關(guān)的東西,比如html標(biāo)簽、推廣等,這些在實(shí)際搜索引擎中都是無用的。內(nèi)容處理模塊會將無用數(shù)據(jù)、標(biāo)簽清洗掉,為后續(xù)的分詞做準(zhǔn)備。5.2 中文分詞
將清洗完成的內(nèi)容進(jìn)行分詞提取關(guān)鍵詞,比如一個(gè)網(wǎng)頁內(nèi)容有1000字,分詞之后大約有50個(gè)詞,相當(dāng)于提取了網(wǎng)頁的主干,并且會對標(biāo)題、摘要、正文等不同部分的內(nèi)容做不同權(quán)重處理。分詞過程中會剔除停用詞、虛詞等,比如"的、得、地"等,從而極力還原網(wǎng)頁的主干內(nèi)容。我們用在線網(wǎng)頁分詞工具和真實(shí)網(wǎng)頁來模擬下這個(gè)過程:網(wǎng)頁分詞在線工具:http://www.78901.net/fenci/抓取網(wǎng)頁:https://tech.huanqiu.com/article/3zMq4KbdTAA可以看到分詞后可以標(biāo)注詞頻,這些都是后續(xù)作為網(wǎng)頁排序的重要來源,但是中文是很復(fù)雜的,因此分詞算法會有很多種,常見的包括:
- 基于字符串匹配的分詞算法
- 基于概率統(tǒng)計(jì)的分詞算法
- 基于語義規(guī)則的分詞算法
- 其他算法
5.3 正排索引
假定我們將每個(gè)網(wǎng)頁進(jìn)行唯一編號docid,經(jīng)過前面的分詞一個(gè)網(wǎng)頁將被分成不同權(quán)重的多個(gè)實(shí)體詞。所謂正排就是根據(jù)docid可以拿到屬于該網(wǎng)頁的所有內(nèi)容,是一個(gè)符合我們思維的正向過程,相對而言會有倒排索引。我們以一篇《隱秘的角落》劇情簡介的頁面為例,模擬分詞情況,大致如下(本分詞結(jié)果純屬腦補(bǔ),以實(shí)際為準(zhǔn)):5.4 倒排索引
假如我們對10000個(gè)網(wǎng)頁進(jìn)行了分詞,其中包含了一些公共檢索詞:微山湖、智取威虎山、三十而立、隱秘的角落等,因此我們匯總之后將建立檢索詞->網(wǎng)頁的映射關(guān)系。那么對于檢索詞"隱秘的角落"出現(xiàn)很多個(gè)網(wǎng)頁,倒排索引就相當(dāng)于從一個(gè)詞能拉取到多少文章的過程。就如同我們提到美食就想到:火鍋、燒烤、烤鴨、炒菜等等,是一個(gè)從點(diǎn)到面的過程,這種逆向過程在搜索引擎中非常重要。5.5 本章小結(jié)
內(nèi)容處理模塊將抓取到的網(wǎng)頁進(jìn)行清洗、提前新URL給爬蟲模塊、內(nèi)容分詞、建立正排索引和倒排索引,是個(gè)承上啟下的中間環(huán)節(jié)。特別地,提一下正排索引和倒排索引,字面上并不直觀,其實(shí)道理并不難理解:正排索引:具體到一篇網(wǎng)頁有多少關(guān)鍵詞,特指屬于該網(wǎng)頁本身的內(nèi)容集合,是一個(gè)網(wǎng)頁。倒排索引:一個(gè)檢索關(guān)鍵詞對應(yīng)多少相關(guān)聯(lián)的網(wǎng)頁,也就是可備選網(wǎng)頁集合,是一類網(wǎng)頁。網(wǎng)頁排序和用戶模塊
6.1 網(wǎng)頁排序的必要性
由于存儲的網(wǎng)頁是百千億級的,那么一個(gè)檢索詞可能對于幾萬、幾十萬甚至更多相關(guān)的網(wǎng)頁。網(wǎng)頁排序需要綜合考慮:相關(guān)性、權(quán)威性、時(shí)效性、豐富度等多個(gè)方面。搜索引擎要展示優(yōu)質(zhì)的強(qiáng)關(guān)聯(lián)網(wǎng)頁給用戶,并且放在靠前的位置,否則搜索效果將會很差,用戶并不買賬。事實(shí)上也是如此,比如搜索引擎返回了10頁結(jié)果,每頁10條,總結(jié)100條,一般用戶點(diǎn)擊到1-3頁之后的網(wǎng)頁大概率就不再點(diǎn)擊了,因此排序的頭部內(nèi)容對于搜索結(jié)果至關(guān)重要。我們?nèi)匀灰詸z索"隱秘的角落"為例,百度共計(jì)返回了10頁,其中1-2頁的內(nèi)容是強(qiáng)關(guān)聯(lián)的,是個(gè)比較不錯的檢索結(jié)果了:6.2 網(wǎng)頁排序的常見策略
網(wǎng)頁排序策略是個(gè)不斷優(yōu)化和提升的演進(jìn)過程,我們來一起看下都有哪些排序策略:- 基于詞頻和位置權(quán)重的排序
- 基于鏈接分析的排序
6.3 網(wǎng)頁反作弊和SEO
搜索引擎也存在二八原則,頭部的網(wǎng)頁占據(jù)了大量的點(diǎn)擊流量,也意味著巨大的商業(yè)價(jià)值。這里就要提到SEO,先看下百度百科對SEO的定義:搜索引擎優(yōu)化又稱為SEO,即Search Engine Optimization,它是一種通過分析搜索引擎的排名規(guī)律,了解各種搜索引擎怎樣進(jìn)行搜索、怎樣抓取互聯(lián)網(wǎng)頁面、怎樣確定特定關(guān)鍵詞的搜索結(jié)果排名的技術(shù)。搜索引擎采用易于被搜索引用的手段,對網(wǎng)站進(jìn)行有針對性的優(yōu)化,提高網(wǎng)站在搜索引擎中的自然排名,吸引更多的用戶訪問網(wǎng)站,提高網(wǎng)站的訪問量,提高網(wǎng)站的銷售能力和宣傳能力,從而提升網(wǎng)站的品牌效應(yīng)。道高一尺魔高一丈,只有魔法可以打敗魔法。網(wǎng)頁反作弊是搜索引擎需要解決的重要問題,常見的有內(nèi)容反作弊、鏈接分析反作弊等。- 網(wǎng)頁內(nèi)容作弊
比如在網(wǎng)頁內(nèi)容中增加大量重復(fù)熱詞、在標(biāo)題/摘要等重要位置增加熱度詞、html標(biāo)簽作弊等等,比如在一篇主題無聯(lián)系的網(wǎng)頁中增加大量"隱秘的角落"熱度詞、增加 等強(qiáng)調(diào)性html標(biāo)簽。 - 鏈接分析作弊
構(gòu)建大量相互引用的頁面集合、購買高排名友鏈等等,就是搞很多可以指向自己網(wǎng)頁的其他網(wǎng)頁,從而構(gòu)成一個(gè)作弊引用鏈條。
6.4 用戶搜索意圖理解
用戶模塊直接和用戶交互,接收用戶的搜索詞,準(zhǔn)確理解用戶的搜索意圖非常重要。實(shí)際上用戶的輸入是五花八門的,偏口語化,甚至有拼寫錯誤、并且不同背景的用戶對同一個(gè)檢索詞的需求不一樣、無爭議檢索詞的使用目的也不一樣。- 檢索詞為:美食宮保雞丁
這個(gè)檢索詞算是比較優(yōu)質(zhì)了,但是仍然不明確是想找飯店去吃宮保雞丁?還是想找宮保雞丁的菜譜?還是想查宮保雞丁的歷史起源?還是宮保雞丁的相關(guān)評價(jià)?所以會出現(xiàn)很多情況。 - 檢索詞為:你說我中午遲點(diǎn)啥呢?
口語化檢索詞并且存在錯別字,其中可能涉及詞語糾錯、同義詞轉(zhuǎn)換等等,才能找到準(zhǔn)確的檢索詞,進(jìn)而明確檢索意圖,召回網(wǎng)頁。
全文總結(jié)
搜索引擎是個(gè)非常復(fù)雜的系統(tǒng)工程,涉及非常多的算法和工程實(shí)現(xiàn),本文旨在和大家一起簡單梳理搜索引擎的基本組成和運(yùn)行原理,算是科普文章了。搜索引擎中每一個(gè)模塊做好都不容易,也是互聯(lián)網(wǎng)產(chǎn)品中技術(shù)含金量的典型代表,深挖一個(gè)模塊都受益匪淺。更多精彩推薦
?停滯數(shù)年后,ElasticJob 攜首個(gè) Apache 版本 3.0.0-alpha 回歸!?寫不出滿分作文怎么辦,GPT-3 來幫你?互聯(lián)網(wǎng)不相信學(xué)渣?收藏!美國博士明確給出Python的高效學(xué)習(xí)技巧?垃圾回收策略和算法,看這篇就夠了?2020 以太坊技術(shù)及應(yīng)用大會·中國圓滿落幕,大咖們的演講精華都在這里了!點(diǎn)分享點(diǎn)點(diǎn)贊點(diǎn)在看總結(jié)
以上是生活随笔為你收集整理的php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 福昕pdf虚拟打印机_一学就会的PDF文
- 下一篇: 动态规划算法php,php算法学习之动态