国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典

這篇具有很好參考價(jià)值的文章主要介紹了【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

寫(xiě)在前面

這篇文章我們就給出一系列的數(shù)據(jù)結(jié)構(gòu),使得詞典能達(dá)到越來(lái)越高的壓縮比。當(dāng)然,和倒排索引記錄表的大小相比,詞典只占據(jù)了非常小的空間。那么為什么要對(duì)詞典進(jìn)行壓縮呢?

這是因?yàn)闆Q定信息檢索系統(tǒng)的查詢響應(yīng)時(shí)間的一個(gè)重要因素就是磁盤(pán)的訪問(wèn)次數(shù),而如果有部分詞典存在于磁盤(pán)上,那么在處理查詢時(shí)就需要更多的磁盤(pán)訪問(wèn)次數(shù)。 因此,詞典壓縮的主要目的是可以將詞典放在內(nèi)存當(dāng)中,這樣才會(huì)獲得很高的查詢吞吐率。那么如何能將更多的詞典壓縮在有限的內(nèi)存中呢?

1. 詞典看成單一字符串

最簡(jiǎn)單的詞典的數(shù)據(jù)結(jié)構(gòu)就是整個(gè)詞典采用定長(zhǎng)數(shù)組來(lái)存儲(chǔ)且所有詞項(xiàng)按照詞典序排序。假設(shè)對(duì)每個(gè)詞項(xiàng)采用20B的固定長(zhǎng)度存儲(chǔ),文檔頻率采用4B存儲(chǔ),詞項(xiàng)到倒排索引也采用4B存儲(chǔ)。這里的4B指針能夠訪問(wèn)4GB的地址空間(4B–>32位–>2的32次方–>4GB)。

【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典,從0到1寫(xiě)一個(gè)搜索引擎,搜索引擎
這樣即使我們的詞典有 四百萬(wàn) 個(gè),我們所占的內(nèi)存就只是 4,000,000 * (20+4+4) B = 112 MB,只是一百多兆而已,這非常的壓縮。

但是很明顯,采用這種定長(zhǎng)方法來(lái)存儲(chǔ)詞典存在空間浪費(fèi)。一個(gè)中文三個(gè)字節(jié),很多情況下我們的詞典只是兩個(gè)中文,也就是六個(gè)字節(jié),所以會(huì)有 14字節(jié)的浪費(fèi) 。但是如果是一些特定的詞語(yǔ)超過(guò)了20字節(jié)(比如中南財(cái)經(jīng)政法大學(xué)),這里又存不下去。一種解決上述缺陷的方法是將所有的詞項(xiàng)存成一個(gè)長(zhǎng)字符串,并給每個(gè)詞項(xiàng)增加一個(gè)定位指針,他在指向下一詞項(xiàng)的同時(shí)也表示這當(dāng)前詞項(xiàng)的結(jié)束。 同以往一樣,仍然可以通過(guò)二分查法定位到所需的詞項(xiàng),但是現(xiàn)在的表更小了。

由于每20B能夠節(jié)省下12B,所以相當(dāng)于前面的定長(zhǎng)機(jī)制而言,這種機(jī)制能夠在詞項(xiàng)存儲(chǔ)上節(jié)省大約60%的空間。當(dāng)然,以上計(jì)算沒(méi)有包括指向詞項(xiàng)的指針?biāo)牡目臻g。所有的這些指針尋址的空間大小為 400000 ? 8 = 3.2 ? 1 0 6 400000 * 8 = 3.2 * 10^6 400000?8=3.2?106 ,因此一個(gè)指針 可以用 log ? 2 ( 3.2 ) ? 1 0 2 \log_2(3.2)*10^2 log2?(3.2)?102 約等于 22 位 或者 3B來(lái)表示

【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典,從0到1寫(xiě)一個(gè)搜索引擎,搜索引擎
將整個(gè)詞條看成一個(gè)長(zhǎng)字符串的詞典存儲(chǔ)方式,其中指向下一詞項(xiàng)的指針同時(shí)也標(biāo)志著當(dāng)前詞項(xiàng)的結(jié)束。

在這種方式下,詞條就將所有上述的 4,000,000 * (20+4+4) B = 112 MB 壓縮到了 4,000,000 * (3+4+4+8) B = 76 MB ,這個(gè) 8 指的是每個(gè)詞項(xiàng)的平均長(zhǎng)度。這種就從 112MB --> 76MB 大大降低了1/3

2. 按塊存儲(chǔ)

我們可以根據(jù)上一節(jié)的結(jié)果進(jìn)行再一次的壓縮:將長(zhǎng)字符串中的詞項(xiàng)進(jìn)行分組變成大小為k的塊,即k個(gè)詞項(xiàng)一組,然后對(duì)每個(gè)塊只保留第一個(gè)詞項(xiàng)的指針。同時(shí)用一個(gè)額外字典將每個(gè)詞項(xiàng)的長(zhǎng)度存儲(chǔ)在每個(gè)詞項(xiàng)的首部。因此,每個(gè)塊而已,可以減少k-1個(gè)詞項(xiàng)指針,但是需要額外的kB來(lái)保存k個(gè)詞項(xiàng)的首部。

【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典,從0到1寫(xiě)一個(gè)搜索引擎,搜索引擎
因此,對(duì)每個(gè)塊而言,可以減少k-1個(gè)詞項(xiàng)指針,到那時(shí)需要額外的kB來(lái)保存k個(gè)詞項(xiàng)的長(zhǎng)度。對(duì)于k=4,詞項(xiàng)指針的存儲(chǔ)將會(huì)減少 (k-1) * 3 = 9B ,但是同時(shí)需要增加 k=4B 來(lái)存儲(chǔ)詞項(xiàng)的長(zhǎng)度。因此在按塊存儲(chǔ)的方式下,沒(méi)k=4個(gè)詞項(xiàng)的方式下,每k=4個(gè)詞項(xiàng)就會(huì)節(jié)省出5B,所以總共節(jié)省的空間位 400000 * 1/4 * 5 = 5 MB,也就再次減少了5MB,在 76MB 的基礎(chǔ)上又少了 71MB。

顯然,k越大,壓縮率也就越高。但是,在壓縮和詞項(xiàng)查找速度之間必須要保持某種平衡。否則會(huì)導(dǎo)致查找速率偏慢。

除此之外,還有一種前端編碼方式的壓縮,也就是將上面多個(gè)詞的公共部分提取出來(lái),這樣能減少很多的空間。,這里就不過(guò)多講解了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-654496.html

到了這里,關(guān)于【Golang系統(tǒng)開(kāi)發(fā)】搜索引擎(2) 壓縮詞典的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • tantivy 用Rust開(kāi)發(fā)搜索引擎

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 搜索引擎(search engine)是互聯(lián)網(wǎng)技術(shù)中最重要的組成部分之一,它用于收集、整理、索引和存儲(chǔ)海量數(shù)據(jù)。它的主要功能是快速地對(duì)海量文檔進(jìn)行檢索、排序和過(guò)濾,為用戶提供良好的檢索體驗(yàn)。目前,搜索引擎已成為網(wǎng)絡(luò)生活的一部分,如

    2024年02月10日
    瀏覽(26)
  • 搜索引擎系統(tǒng)簡(jiǎn)要分析

    搜索引擎系統(tǒng)簡(jiǎn)要分析

    目錄 一、搜索引擎簡(jiǎn)單介紹 二、搜索引擎整體架構(gòu)和工作過(guò)程 (一)整體分析 (二)爬蟲(chóng)系統(tǒng) 三個(gè)基本點(diǎn) 爬蟲(chóng)系統(tǒng)的工作流程 關(guān)鍵考慮因素和挑戰(zhàn) (三)索引系統(tǒng) 網(wǎng)頁(yè)處理階段 預(yù)處理階段 反作弊分析階段 索引生成階段 索引拆分 索引構(gòu)建 索引更新 (四)檢索系統(tǒng) 查

    2024年02月04日
    瀏覽(19)
  • 搜索引擎系統(tǒng)———引擎模塊(ssm三劍客項(xiàng)目)

    搜索引擎系統(tǒng)———引擎模塊(ssm三劍客項(xiàng)目)

    =@TOC 咋們?nèi)绻梦覀兊男》?wù)器去搞百度,搜狗那種引擎肯定是不行的,內(nèi)屬于全站搜索,我們這里做一個(gè)站內(nèi)搜索。這個(gè)還是可以的,就類似于我們對(duì)網(wǎng)站里的資源進(jìn)行搜索。 搜索引擎就像一個(gè)小蜜蜂每天不停的采摘蜂蜜,就是去 爬蟲(chóng) 各個(gè)網(wǎng)頁(yè),然后通過(guò)爬取之后建立

    2023年04月09日
    瀏覽(14)
  • C++開(kāi)源搜索引擎xapian開(kāi)發(fā)入門(mén)

    開(kāi)源搜索引擎框架和產(chǎn)品有很多,例如elasticsearch,sphinx,xapian,lucence,typesense,MeiliSearch 等,分別用不同的語(yǔ)言實(shí)現(xiàn),具有類似但不完全相同的功能。準(zhǔn)確來(lái)說(shuō)不屬于通用的搜索引擎,而是屬于一種基于索引的文字檢索系統(tǒng)。 考慮到方便將這種檢索系統(tǒng)通過(guò)代碼開(kāi)發(fā)的形式

    2024年02月12日
    瀏覽(25)
  • Phind——一款面向開(kāi)發(fā)人員的AI搜索引擎

    Phind——一款面向開(kāi)發(fā)人員的AI搜索引擎

    Phind是一款面向開(kāi)發(fā)人員的AI搜索引擎,它由大語(yǔ)言模型(Large Language Model,LLM)驅(qū)動(dòng) 。相比于傳統(tǒng)的搜索引擎,Phind有以下優(yōu)勢(shì):自然語(yǔ)言搜索、面向開(kāi)發(fā)者、AI驅(qū)動(dòng)、時(shí)間定制、無(wú)需注冊(cè)、以及社區(qū)支持 。 Phind支持使用自然語(yǔ)言進(jìn)行搜索,程序員可以用類似于和人類對(duì)話的

    2023年04月22日
    瀏覽(33)
  • 分享個(gè)自己開(kāi)發(fā)的夸克網(wǎng)盤(pán)資源搜索引擎

    https://www.cuppaso.com/ 框架使用了 spring boot 全家桶 2.7.1版本 mybatis plus 最新版本3.5.1 es搜索引擎 版本的話是 elasticsearch-7.17.4-windows-x86_64

    2024年02月12日
    瀏覽(23)
  • Web 開(kāi)發(fā)與搜索引擎優(yōu)化,你應(yīng)該選擇哪一個(gè)?

    Web 開(kāi)發(fā)與搜索引擎優(yōu)化,你應(yīng)該選擇哪一個(gè)?

    ?? 個(gè)人網(wǎng)站:【海擁】【摸魚(yú)游戲】【神級(jí)源碼資源網(wǎng)站】 ?? 前端學(xué)習(xí)課程:??【28個(gè)案例趣學(xué)前端】【400個(gè)JS面試題】 ?? 想尋找共同學(xué)習(xí)交流、摸魚(yú)劃水的小伙伴,請(qǐng)點(diǎn)擊【摸魚(yú)學(xué)習(xí)交流群】 ** Web 開(kāi)發(fā)是設(shè)計(jì)、開(kāi)發(fā)和維護(hù)網(wǎng)站的數(shù)字過(guò)程。SEO, 搜索引擎優(yōu)化 ,是一種

    2024年02月03日
    瀏覽(15)
  • 【數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】簡(jiǎn)單搜索引擎系統(tǒng)

    【數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】簡(jiǎn)單搜索引擎系統(tǒng)

    該程序使用python語(yǔ)言實(shí)現(xiàn)利用爬蟲(chóng)代碼爬取網(wǎng)站鏈接信息,將網(wǎng)站中文詞語(yǔ)通過(guò)結(jié)巴分詞進(jìn)行分割,并存儲(chǔ)爬取的數(shù)據(jù)信息,利用結(jié)巴分詞庫(kù)處理輸入框用戶輸入的詞語(yǔ),進(jìn)行搜索,通過(guò)鏈接評(píng)價(jià)函數(shù),優(yōu)先顯示評(píng)分較高的鏈接;設(shè)計(jì)簡(jiǎn)單的html頁(yè)面,實(shí)現(xiàn)可視化搜索功能。

    2024年01月23日
    瀏覽(21)
  • 競(jìng)賽 python的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    競(jìng)賽 python的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    ?? 優(yōu)質(zhì)競(jìng)賽項(xiàng)目系列,今天要分享的是 ?? python的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) ??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分) 難度系數(shù):3分 工作量:5分 創(chuàng)新點(diǎn):3分 該項(xiàng)目較為新穎,適合作為競(jìng)賽課題方向,學(xué)長(zhǎng)非常推薦! ?? 更多資料, 項(xiàng)目分享: https://gitee.com/dancheng-s

    2024年04月14日
    瀏覽(26)
  • 基于java的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于java的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 基于Java的搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的研究背景和動(dòng)機(jī)是構(gòu)建一個(gè)高效、準(zhǔn)確、安全的搜索引擎系統(tǒng)。隨著互聯(lián)網(wǎng)的普及,搜索引擎已經(jīng)成為了人們獲取信息的主要方式之一。但是,現(xiàn)有的搜索引擎系統(tǒng)還存在一些問(wèn)題,比如搜索結(jié)果的準(zhǔn)確

    2024年02月04日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包