“詞頻” = “總結(jié)”,那么肯定是 Blink 是這篇文章更重要的關(guān)鍵字 。但又會(huì)遇到了另。深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)( 三 )。" />

日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)( 三 )


只考慮剩下的有實(shí)際意義的詞,如果文章中詞頻數(shù)關(guān)系: “Blink” > “詞頻” = “總結(jié)”,那么肯定是 Blink 是這篇文章更重要的關(guān)鍵字 。但又會(huì)遇到了另一個(gè)問題,如果發(fā)現(xiàn) "Blink"、"實(shí)戰(zhàn)"、"總結(jié)"這三個(gè)詞的出現(xiàn)次數(shù)一樣多 。這是不是意味著,作為關(guān)鍵詞,它們的重要性是一樣的?
不是的,通過統(tǒng)計(jì)全部博客,你發(fā)現(xiàn) 含關(guān)鍵字總博客數(shù): “Blink” < “實(shí)戰(zhàn)” < “總結(jié)”,這時(shí)候說明 “Blink” 不怎么常見,一旦出現(xiàn),一定相比 “實(shí)戰(zhàn)” 和 “總結(jié)”,對這篇文章的重要性更大 。
BM25
上面解釋了 TF 和 IDF,那么 TF 和 IDF 誰更重要呢,怎么計(jì)算最終的相關(guān)性得分呢?那就是 BM25 。
BM25算法,通常用來作搜索相關(guān)性平分 。一句話概況其主要思想:對Query進(jìn)行語素解析,生成語素qi;然后,對于每個(gè)搜索結(jié)果D,計(jì)算每個(gè)語素qi與D的相關(guān)性得分,最后,將qi相對于D的相關(guān)性得分進(jìn)行加權(quán)求和,從而得到Query與D的相關(guān)性得分 。
BM25算法的一般性公式如下:

深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)


其中,Q表示Query,qi表示Q解析之后的一個(gè)語素(對中文而言,我們可以把對Query的分詞作為語素分析,每個(gè)詞看成語素qi 。);d表示一個(gè)搜索結(jié)果文檔;Wi表示語素qi的權(quán)重;R(qi,d)表示語素qi與文檔d的相關(guān)性得分 。
其中 Wi 通常使用 IDF 來表達(dá),R 使用 TF 來表達(dá);綜上,BM25算法的相關(guān)性得分公式可總結(jié)為:
深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)


BM25 通過使用不同的語素分析方法、語素權(quán)重判定方法,以及語素與文檔的相關(guān)性判定方法,我們可以衍生出不同的搜索相關(guān)性得分計(jì)算方法,這就為我們設(shè)計(jì)算法提供了較大的靈活性 。
Part 4、空間索引在點(diǎn)評口碑上,經(jīng)常有類似的場景,搜索 “1公里以內(nèi)的美食”,那么這個(gè)1公里怎么實(shí)現(xiàn)呢?
【深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)】在數(shù)據(jù)庫中可以通過暴力計(jì)算、矩形過濾、以及B樹對經(jīng)度和維度建索引,但這性能仍然很慢(可參考 為什么需要空間索引 ) 。搜索里用了一個(gè)很巧妙的方法,Geo Hash 。
深入搜索引擎原理 搜索引擎其實(shí)也是一個(gè)什么系統(tǒng)


如上圖,表示根據(jù) GeoHash 對北京幾個(gè)區(qū)域生成的字符串,有幾個(gè)特點(diǎn):
  • 一個(gè)字符串,代表一個(gè)矩形區(qū)域
  • 字符串越長,表示的范圍越精確 (長度為8時(shí)精度在19米左右,而當(dāng)編碼長度為9時(shí)精度在2米左右)
  • 字符串相似的,表示距離相近 (這就可以利用字符串的前綴匹配來查詢附近的POI信息)
Geo Hash 如何編碼?地球上任何一個(gè)位置都可以用經(jīng)緯度表示,緯度的區(qū)間是 [-90, 90],經(jīng)度的區(qū)間 [-180, 180] 。比如天安門的坐標(biāo)是 39.908,116.397,整體編碼過程如下:
一、對緯度 39.908 的編碼如下:
  1. 將緯度劃分2個(gè)區(qū)間,左區(qū)間 [-90, 0) 用 0 表示,右區(qū)間 [0, 90] 用 1 表示,39.908 處在右區(qū)間,故第一位編碼是 1;
  2. 在將 [0, 90] 劃分2個(gè)區(qū)間,左區(qū)間 [0, 45) 用 0 表示,右區(qū)間 [45, 90] 用 1 表示,39.908處在左區(qū)間,故第二位編碼是 0;
  3. 同1、2的計(jì)算步驟,39.908 的最后10位編碼是 “10111 00011”
二、對經(jīng)度 116.397 的編碼如下:
  1. 將經(jīng)度劃分2個(gè)區(qū)間,左區(qū)間 [-180, 0) 用 0 表示,右區(qū)間 [0, 180] 用 1 表示,116.397處在右區(qū)間,故第一位編碼是 1;
  2. 在將 [0, 180] 劃分2個(gè)區(qū)間,左區(qū)間 [0, 90) 用 0 表示,右區(qū)間 [90, 180] 用 1 表示,116.397處在右區(qū)間,故第二位編碼是 1;

    推薦閱讀