日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

初识ES-倒排索引

發(fā)布時(shí)間:2024/4/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识ES-倒排索引 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

倒排索引

倒排索引的概念是基于MySQL這樣的正向索引而言的。

正向索引

那么什么是正向索引呢?例如給下表(tb_goods)中的id創(chuàng)建索引:

如果是根據(jù)id查詢,那么直接走索引,查詢速度非常快。

但如果是基于title做模糊查詢,只能是逐行掃描數(shù)據(jù),流程如下:

1)用戶搜索數(shù)據(jù),條件是title符合"%手機(jī)%"

2)逐行獲取數(shù)據(jù),比如id為1的數(shù)據(jù)

3)判斷數(shù)據(jù)中的title是否符合用戶搜索條件

4)如果符合則放入結(jié)果集,不符合則丟棄。回到步驟1

逐行掃描,也就是全表掃描,隨著數(shù)據(jù)量增加,其查詢效率也會(huì)越來(lái)越低。當(dāng)數(shù)據(jù)量達(dá)到數(shù)百萬(wàn)時(shí),就是一場(chǎng)災(zāi)難。

倒排索引

倒排索引中有兩個(gè)非常重要的概念:

  • 文檔(Document):用來(lái)搜索的數(shù)據(jù),其中的每一條數(shù)據(jù)就是一個(gè)文檔。例如一個(gè)網(wǎng)頁(yè)、一個(gè)商品信息

  • 詞條(Term):對(duì)文檔數(shù)據(jù)或用戶搜索數(shù)據(jù),利用某種算法分詞,得到的具備含義的詞語(yǔ)就是詞條。例如:我是中國(guó)人,就可以分為:我、是、中國(guó)人、中國(guó)、國(guó)人這樣的幾個(gè)詞條

創(chuàng)建倒排索引是對(duì)正向索引的一種特殊處理,流程如下:

  • 將每一個(gè)文檔的數(shù)據(jù)利用算法分詞,得到一個(gè)個(gè)詞條

  • 創(chuàng)建表,每行數(shù)據(jù)包括詞條、詞條所在文檔id、位置等信息

  • 因?yàn)樵~條唯一性,可以給詞條創(chuàng)建索引,例如hash表結(jié)構(gòu)索引

如圖:

倒排索引的搜索流程如下(以搜索"華為手機(jī)"為例):

1)用戶輸入條件"華為手機(jī)"進(jìn)行搜索。

2)對(duì)用戶輸入內(nèi)容分詞,得到詞條:華為、手機(jī)。

3)拿著詞條在倒排索引中查找,可以得到包含詞條的文檔id:1、2、3。

4)拿著文檔id到正向索引中查找具體文檔。

如圖:

?雖然要先查詢倒排索引,再查詢倒排索引,但是無(wú)論是詞條、還是文檔id都建立了索引,查詢速度非常快!無(wú)需全表掃描。

正向和倒排

那么為什么一個(gè)叫做正向索引,一個(gè)叫做倒排索引呢?

  • 正向索引是最傳統(tǒng)的,根據(jù)id索引的方式。但根據(jù)詞條查詢時(shí),必須先逐條獲取每個(gè)文檔,然后判斷文檔中是否包含所需要的詞條,是根據(jù)文檔找詞條的過(guò)程

  • 倒排索引則相反,是先找到用戶要搜索的詞條,根據(jù)詞條得到保護(hù)詞條的文檔的id,然后根據(jù)id獲取文檔。是根據(jù)詞條找文檔的過(guò)程

是不是恰好反過(guò)來(lái)了?

那么兩者方式的優(yōu)缺點(diǎn)是什么呢?

正向索引

  • 優(yōu)點(diǎn):

    • 可以給多個(gè)字段創(chuàng)建索引

    • 根據(jù)索引字段搜索、排序速度非常快

  • 缺點(diǎn):

    • 根據(jù)非索引字段,或者索引字段中的部分詞條查找時(shí),只能全表掃描。

倒排索引

  • 優(yōu)點(diǎn):

    • 根據(jù)詞條搜索、模糊搜索時(shí),速度非???/p>

  • 缺點(diǎn):

    • 只能給詞條創(chuàng)建索引,而不是字段

    • 無(wú)法根據(jù)字段做排序

總結(jié)

以上是生活随笔為你收集整理的初识ES-倒排索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。