歷史文章(文章累計(jì)490+)
《國(guó)內(nèi)最全的Spring?Boot系列之一》
《國(guó)內(nèi)最全的Spring?Boot系列之二》
《國(guó)內(nèi)最全的Spring?Boot系列之三》
《國(guó)內(nèi)最全的Spring?Boot系列之四》
《國(guó)內(nèi)最全的Spring?Boot系列之五》
《國(guó)內(nèi)最全的Spring?Boot系列之六》
Mybatis-Plus通用枚舉功能 [MyBatis-Plus系列] - 第493篇
Mybatis-Plus自動(dòng)填充功能配置和使用 [MyBatis-Plus系列] - 第494篇
15篇MyBatis-Plus系列集合篇「值得收藏學(xué)習(xí)」
悟纖:哎,頭發(fā)都白了~
師傅:徒兒這是怎么了?
悟纖:最近發(fā)現(xiàn)mysql的like “%sprinboot%”?查詢(xún)很慢呢?
師傅:徒兒,你這是全表掃描了,在數(shù)據(jù)量大的情況下,確實(shí)查詢(xún)會(huì)比較慢。
悟纖:師傅,那這個(gè)怎么辦,這個(gè)搜索功能少不了呀。
師傅:這個(gè)師傅就要用到搜索引擎了。
悟纖:那師傅,你趕緊教教我這個(gè)技能呢。
師傅:為師正有這個(gè)打算。
悟纖:那真是太好了。開(kāi)干?。。。。?!
導(dǎo)讀
Hi,大家好,我是悟纖。我就是我,不一樣的煙火。我就是我,與眾不同的小蘋(píng)果。
在學(xué)習(xí)ElasticSearch之前,要先學(xué)習(xí)一些基本的概念,這一小節(jié)的話,先來(lái)了解下全文檢索概念。
一、什么是全文檢索
1.1?全文檢索基本概念
全文檢索是一種通過(guò)對(duì)文本內(nèi)容進(jìn)行全面索引和搜索的技術(shù)。它可以快速地在大量文本數(shù)據(jù)中查找包含特定關(guān)鍵詞或短語(yǔ)的文檔,并返回相關(guān)的搜索結(jié)果。全文檢索廣泛應(yīng)用于各種信息管理系統(tǒng)和應(yīng)用中,如搜索引擎、文檔管理系統(tǒng)、電子郵件客戶(hù)端、新聞聚合網(wǎng)站等。它可以幫助用戶(hù)快速定位所需信息,提高檢索效率和準(zhǔn)確性。
(1)查詢(xún):有明確的搜索條件邊界。比如,年齡?15~25?歲,顏色?=?紅色,價(jià)格?< 3000,這里的?15、25、紅色、3000?都是條件邊界。即有明確的范圍界定。
(2)檢索:即全文檢索,無(wú)搜索條件邊界,召回結(jié)果取決于相關(guān)性,其相關(guān)性計(jì)算無(wú)明確邊界性條件,如同義詞、諧音、別名、錯(cuò)別字、混淆詞、網(wǎng)絡(luò)熱梗等均可成為其相關(guān)性判斷依據(jù)。
說(shuō)明:顯示了符合包含java和設(shè)計(jì)模式的搜索結(jié)果,并且對(duì)于java、設(shè)計(jì)模式進(jìn)行了高亮顯示。
1.2?用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)搜索存在的問(wèn)題
設(shè)想一個(gè)關(guān)于全文檢索的場(chǎng)景,比如搜索Java設(shè)計(jì)模式:
思考一下:用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)有什么問(wèn)題?
如果是用MySQL存儲(chǔ)文章 ,我們應(yīng)該會(huì)使用這樣的?SQL?去查詢(xún):
select * from t_blog where content like "%Java設(shè)計(jì)模式%"
這種需要遍歷所有的記錄進(jìn)行匹配,不但效率低,而且搜索結(jié)果不符合我們搜索時(shí)的期望。
二、全文檢索的原理
在全文檢索中,首先需要對(duì)文本數(shù)據(jù)進(jìn)行處理,包括分詞、去除停用詞等。
然后,對(duì)處理后的文本數(shù)據(jù)建立索引,索引會(huì)記錄每個(gè)單詞在文檔中的位置信息以及其他相關(guān)的元數(shù)據(jù),如詞頻、權(quán)重等。這個(gè)過(guò)程通常使用倒排索引(inverted index)來(lái)實(shí)現(xiàn),倒排索引將單詞映射到包含該單詞的文檔列表中,以便快速定位相關(guān)文檔。
當(dāng)用戶(hù)發(fā)起搜索請(qǐng)求時(shí),搜索引擎會(huì)根據(jù)用戶(hù)提供的關(guān)鍵詞或短語(yǔ),在建立好的索引中查找匹配的文檔。搜索引擎會(huì)根據(jù)索引中的信息計(jì)算文檔的相關(guān)性,并按照相關(guān)性排序返回搜索結(jié)果。用戶(hù)可以通過(guò)不同的搜索策略和過(guò)濾條件來(lái)精確控制搜索結(jié)果的質(zhì)量和范圍。
三、什么是倒排索引
正排索引(Forward Index)和倒排索引(Inverted Index)是全文檢索中常用的兩種索引結(jié)構(gòu),它們?cè)谒饕退阉鞯倪^(guò)程中扮演不同的角色。
3.1正排索引(正向索引)
正排索引是將文檔按順序排列并進(jìn)行編號(hào)的索引結(jié)構(gòu)。每個(gè)文檔都包含了完整的文本內(nèi)容,以及其他相關(guān)的屬性或元數(shù)據(jù),如標(biāo)題、作者、發(fā)布日期等。在正排索引中,可以根據(jù)文檔編號(hào)或其他屬性快速定位和訪問(wèn)文檔的內(nèi)容。正排索引適合用于需要對(duì)文檔進(jìn)行整體檢索和展示的場(chǎng)景,但對(duì)于包含大量文本內(nèi)容的數(shù)據(jù)集來(lái)說(shuō),正排索引的存儲(chǔ)和查詢(xún)效率可能會(huì)受到限制。
在MySQL?中通過(guò)?ID?查找就是一種正排索引的應(yīng)用。
3.2倒排索引(反向索引)
倒排索引是根據(jù)單詞或短語(yǔ)建立的索引結(jié)構(gòu)。它將每個(gè)單詞映射到包含該單詞的文檔列表中。倒排索引的建立過(guò)程是先對(duì)文檔進(jìn)行分詞處理,然后記錄每個(gè)單詞在哪些文檔中出現(xiàn),以及出現(xiàn)的位置信息。通過(guò)倒排索引,可以根據(jù)關(guān)鍵詞或短語(yǔ)快速找到包含這些詞語(yǔ)的文檔,并確定它們的相關(guān)性。倒排索引適用于在大規(guī)模文本數(shù)據(jù)中進(jìn)行關(guān)鍵詞搜索和相關(guān)性排序的場(chǎng)景,它能夠快速定位文檔,提高搜索效率。
我們?cè)趧?chuàng)建文章的時(shí)候,建立一個(gè)關(guān)鍵詞與文章的對(duì)應(yīng)關(guān)系表,就可以稱(chēng)之為倒排索引。如下圖所示:
我就是我,是顏色不一樣的煙火。
我就是我,是與眾不同的小蘋(píng)果。
à悟纖學(xué)院:
學(xué)院中有Spring?Boot相關(guān)的課程!點(diǎn)擊「閱讀原文」進(jìn)行查看!
SpringBoot視頻:http://t.cn/A6ZagYTi
SpringBoot交流平臺(tái):https://t.cn/R3QDhU0
SpringSecurity5.0視頻:http://t.cn/A6ZadMBe
ShardingJDBC分庫(kù)分表:http://t.cn/A6ZarrqS
分布式事務(wù)解決方案:http://t.cn/A6ZaBnIr
JVM內(nèi)存模型調(diào)優(yōu)實(shí)戰(zhàn):http://t.cn/A6wWMVqG
Spring入門(mén)到精通:https://t.cn/A6bFcDh4文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-763717.html
大話設(shè)計(jì)模式之愛(ài)你:https://dwz.cn/wqO0MAy7文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-763717.html
到了這里,關(guān)于全文檢索[ES系列] - 第495篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!