最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ES系列02節(jié)|倒排索引

2023-04-04 11:02 作者:袁庭新  | 我要投稿

前言

我們對Lucence的基本概念了解后,那Lucence是如何實(shí)現(xiàn)全文檢索的?以及它的原理是什么?下面跟著袁老師繼續(xù)探索Lucence的相關(guān)技術(shù),揭開它的面紗。

一. 索引和搜索流程圖

索引和搜索流程圖見如下所示:

1.綠色表示索引過程,對要搜索的原始內(nèi)容進(jìn)行索引構(gòu)建一個索引庫,索引過程包括:

確定原始內(nèi)容即要搜索的內(nèi)容 => 采集文檔 => 創(chuàng)建文檔 => 分析文檔 => 索引文檔

2.紅色表示搜索過程,從索引庫中搜索內(nèi)容,搜索過程包括:

用戶通過搜索界面 => 創(chuàng)建查詢 => 執(zhí)行搜索 => 從索引庫搜索 => 渲染搜索結(jié)果

二. 全文檢索解析

我們以BOSS招聘網(wǎng)站的搜索為例,在網(wǎng)站上輸入關(guān)鍵字搜索顯示的內(nèi)容不是直接從數(shù)據(jù)庫中來的,而是從索引庫中獲取的,網(wǎng)站的索引數(shù)據(jù)需要提前創(chuàng)建的。以下是創(chuàng)建的過程:

第一步:獲得原始文檔

就是從MySQL數(shù)據(jù)庫中通過SQL語句查詢需要創(chuàng)建索引的數(shù)據(jù)。

第二步:創(chuàng)建文檔對象(Document)

把查詢的內(nèi)容構(gòu)建成Lucene能識別的Document對象,獲取原始內(nèi)容的目的是為了索引,在索引前需要將原始內(nèi)容創(chuàng)建成文檔,文檔中包括一個一個的域(Field),這個域?qū)?yīng)就是表中的列。

注意:每個Document可以有多個Field,不同的Document可以有不同的Field,同一個Document可以有相同的Field(域名和域值都相同)。每個文檔都有一個唯一的編號,就是文檔id。

第三步:分析文檔

將原始內(nèi)容創(chuàng)建為包含域(Field)的文檔(Document),需要再對域中的內(nèi)容進(jìn)行分析,分析的過程是經(jīng)過對原始文檔提取單詞、將字母轉(zhuǎn)為小寫、去除標(biāo)點(diǎn)符號、去除停用詞等過程生成最終的語匯單元,可以將語匯單元理解為一個一個的單詞。

分好的詞會組成索引庫中最小的單元Term,一個Term由域名和詞組成。

第四步:創(chuàng)建索引

對所有文檔分析得出的語匯單元進(jìn)行索引,索引的目的是為了搜索,最終要實(shí)現(xiàn)只搜索被索引的語匯單元從而找到Document(文檔)。

注意:創(chuàng)建索引是對語匯單元索引,通過詞語找文檔,這種索引的結(jié)構(gòu)叫倒排索引結(jié)構(gòu)。 倒排索引結(jié)構(gòu)是根據(jù)內(nèi)容(詞語)找文檔,如下圖:

倒排索引結(jié)構(gòu)也叫反向索引結(jié)構(gòu),包括索引和文檔兩部分,索引即詞匯表,它的規(guī)模較小,而文檔集合較大。

三. 倒排索引

倒排索引記錄每個詞條出現(xiàn)在哪些文檔及在文檔中的位置,可以根據(jù)詞條快速定位到包含這個詞條的文檔及出現(xiàn)的位置。

  • 文檔:索引庫中的每一條原始數(shù)據(jù),例如一個商品信息、一個職位信息。

  • 詞條:原始數(shù)據(jù)按照分詞算法進(jìn)行分詞,得到的每一個詞。

創(chuàng)建倒排索引,分為以下幾步。

1.1 創(chuàng)建文檔列表

Lucene首先對原始文檔數(shù)據(jù)進(jìn)行編號(DocID),形成列表,就是一個文檔列表。

1.2 創(chuàng)建倒排索引列表

對文檔中數(shù)據(jù)進(jìn)行分詞,得到詞條(分詞后的一個又一個詞)。對詞條進(jìn)行編號,以詞條創(chuàng)建索引。然后記錄下包含該詞條的所有文檔編號(及其它信息)。

1.3 搜索的過程

當(dāng)用戶輸入任意的詞條時(shí),首先對用戶輸入的數(shù)據(jù)進(jìn)行分詞,得到用戶要搜索的所有詞條,然后拿著這些詞條去倒排索引列表中進(jìn)行匹配。找到這些詞條就能找到包含這些詞條的所有文檔的編號。然后根據(jù)這些編號去文檔列表中找到文檔。

四. 查詢索引

查詢索引也是搜索的過程。搜索就是用戶輸入關(guān)鍵字,從索引(Index)中進(jìn)行搜索的 過程。根據(jù)關(guān)鍵字搜索索引,根據(jù)索引找到對應(yīng)的文檔。

第一步:創(chuàng)建用戶接口,即用戶輸入關(guān)鍵字的地方。

第二步:創(chuàng)建查詢,指定查詢的域名和關(guān)鍵字。

第三步:執(zhí)行查詢。

第四步:渲染結(jié)果(結(jié)果內(nèi)容顯示到頁面上,關(guān)鍵字需要高亮處理)。

五. 結(jié)語

我們一塊兒回顧下下本節(jié)主要學(xué)習(xí)的內(nèi)容,在這一節(jié)中我們介紹了索引和搜索流程圖,并對全文檢索的創(chuàng)建過程進(jìn)行了分析。最后對倒排索引進(jìn)行的剖析,以及索引是如何被查詢通過案例進(jìn)行了闡述和介紹。這一節(jié)的內(nèi)容你學(xué)會了嗎?


ES系列02節(jié)|倒排索引的評論 (共 條)

分享到微博請遵守國家法律
渝北区| 瑞丽市| 松江区| 郁南县| 徐汇区| 云林县| 泽州县| 富顺县| 开阳县| 灯塔市| 齐齐哈尔市| 阜城县| 昭觉县| 新乐市| 蓬莱市| 宁城县| 安岳县| 工布江达县| 客服| 太康县| 渝中区| 永寿县| 昆明市| 革吉县| 巴林右旗| 淮安市| 健康| 五指山市| 聂荣县| 文化| 奉化市| 台中市| 望都县| 长葛市| 靖江市| 海原县| 廊坊市| 华亭县| 蒙自县| 莱州市| 钟祥市|