五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

袁庭新老師ES系列03節(jié)|倒排索引

2023-04-06 15:10 作者:袁庭新  | 我要投稿

前言

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

一. 索引和搜索流程圖

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

1.綠色表示索引過程,對要搜索的原始內容進行索引構建一個索引庫,索引過程包括:

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

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

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

二. 全文檢索解析

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

第一步:獲得原始文檔

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

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

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

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

第三步:分析文檔

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

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

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

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

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

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

三. 倒排索引

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

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

  • 詞條:原始數據按照分詞算法進行分詞,得到的每一個詞。

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

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

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

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

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

1.3 搜索的過程

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

四. 查詢索引

查詢索引也是搜索的過程。搜索就是用戶輸入關鍵字,從索引(Index)中進行搜索的 過程。根據關鍵字搜索索引,根據索引找到對應的文檔。

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

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

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

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

五. 結語

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


袁庭新老師ES系列03節(jié)|倒排索引的評論 (共 條)

分享到微博請遵守國家法律
绥芬河市| 临城县| 阜南县| 云南省| 通海县| 泸定县| 赤水市| 临桂县| 镇沅| 昌江| 六盘水市| 乌拉特后旗| 景宁| 临澧县| 浮梁县| 莱州市| 凌云县| 南安市| 麦盖提县| 大埔区| 南充市| 武宁县| 绍兴市| 湖北省| 磐石市| 富源县| 湖州市| 广宗县| 鄂伦春自治旗| 巴楚县| 颍上县| 济阳县| 慈利县| 汽车| 兖州市| 朝阳市| 九龙坡区| 方山县| 汝州市| 纳雍县| 临漳县|