2021年大数据ELK(三):Lucene全文检索库介绍
全網(wǎng)最詳細(xì)的大數(shù)據(jù)ELK文章系列,強(qiáng)烈建議收藏加關(guān)注!?
新文章都已經(jīng)列出歷史文章目錄,幫助大家回顧前面的知識(shí)重點(diǎn)。
目錄
系列歷史文章
一、什么是全文檢索
1、結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)
2、搜索結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)
3、全文檢索
二、Lucene簡(jiǎn)介
三、倒排索引結(jié)構(gòu)
四、企業(yè)中為什么不直接使用Lucene
1、Lucene的內(nèi)建不支持分布式
2、區(qū)間范圍搜索速度非常緩慢
3、可靠性無(wú)法保障
系列歷史文章
2021年大數(shù)據(jù)ELK(六):安裝Elasticsearch
2021年大數(shù)據(jù)ELK(五):Elasticsearch中的核心概念
2021年大數(shù)據(jù)ELK(四):Lucene的美文搜索案例
2021年大數(shù)據(jù)ELK(三):Lucene全文檢索庫(kù)介紹
2021年大數(shù)據(jù)ELK(二):?Elasticsearch簡(jiǎn)單介紹
2021年大數(shù)據(jù)ELK(一):集中式日志協(xié)議棧Elastic Stack簡(jiǎn)介
一、什么是全文檢索
1、結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)
我們生活中的數(shù)據(jù)總體分為兩種:結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。
- 結(jié)構(gòu)化數(shù)據(jù):指具有固定格式或有限長(zhǎng)度的數(shù)據(jù),如數(shù)據(jù)庫(kù),元數(shù)據(jù)等
- 非結(jié)構(gòu)化數(shù)據(jù):指不定長(zhǎng)或無(wú)固定格式的數(shù)據(jù),如郵件,word文檔等磁盤(pán)上的文件
2、搜索結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)
- 使用SQL語(yǔ)言專門(mén)搜索結(jié)構(gòu)化的數(shù)據(jù)
- 使用ES/Lucene/solr建立倒排索引,根據(jù)關(guān)鍵字就可以搜索一些非結(jié)構(gòu)化(文本)的數(shù)據(jù)
3、全文檢索
全文檢索是指:
- 通過(guò)一個(gè)程序掃描文本中的每一個(gè)單詞,針對(duì)單詞建立索引,并保存該單詞在文本中的位置、以及出現(xiàn)的次數(shù)
- 用戶查詢時(shí),通過(guò)之前建立好的索引來(lái)查詢,將索引中單詞對(duì)應(yīng)的文本位置、出現(xiàn)的次數(shù)返回給用戶,因?yàn)橛辛司唧w文本的位置,所以就可以將具體內(nèi)容讀取出來(lái)了
- 類似于通過(guò)字典中的檢索字表查字的過(guò)程
二、Lucene簡(jiǎn)介
- Lucene是一種高性能的全文檢索庫(kù),在2000年開(kāi)源,最初由大名鼎鼎的Doug Cutting(道格·卡丁)開(kāi)發(fā)
- Lucene是Apache的一個(gè)頂級(jí)開(kāi)源項(xiàng)目,是一個(gè)全文檢索引擎工具包。但Lucene不是一個(gè)完整的全文檢索引擎,它只是提供一個(gè)基本的全文檢索的架構(gòu),還提供了一些基本的文本分詞庫(kù)
- Lucene是一個(gè)簡(jiǎn)單易用的工具包,可以方便的實(shí)現(xiàn)全文檢索的功能
三、倒排索引結(jié)構(gòu)
倒排索引是一種建立索引的方法。是全文檢索系統(tǒng)中常用的數(shù)據(jù)結(jié)構(gòu)。通過(guò)倒排索引,就是根據(jù)單詞快速獲取包含這個(gè)單詞的文檔列表。倒排索引通常由兩個(gè)部分組成:單詞詞典、文檔。
文檔(Document):一般搜索引擎的處理對(duì)象是互聯(lián)網(wǎng)網(wǎng)頁(yè),而文檔這個(gè)概念要更寬泛些,代表以文本形式存在的存儲(chǔ)對(duì)象,相比網(wǎng)頁(yè)來(lái)說(shuō),涵蓋更多種形式,比如Word,PDF,html,XML等不同格式的文件都可以稱之為文檔。再比如一封郵件,一條短信,一條微博也可以稱之為文檔。在本書(shū)后續(xù)內(nèi)容,很多情況下會(huì)使用文檔來(lái)表征文本信息。
文檔集合(Document Collection):由若干文檔構(gòu)成的集合稱之為文檔集合。比如海量的互聯(lián)網(wǎng)網(wǎng)頁(yè)或者說(shuō)大量的電子郵件都是文檔集合的具體例子。
文檔編號(hào)(Document ID):在搜索引擎內(nèi)部,會(huì)將文檔集合內(nèi)每個(gè)文檔賦予一個(gè)唯一的內(nèi)部編號(hào),以此編號(hào)來(lái)作為這個(gè)文檔的唯一標(biāo)識(shí),這樣方便內(nèi)部處理,每個(gè)文檔的內(nèi)部編號(hào)即稱之為“文檔編號(hào)”,后文有時(shí)會(huì)用DocID來(lái)便捷地代表文檔編號(hào)。
單詞編號(hào)(Word ID):與文檔編號(hào)類似,搜索引擎內(nèi)部以唯一的編號(hào)來(lái)表征某個(gè)單詞,單詞編號(hào)可以作為某個(gè)單詞的唯一表征。
倒排索引(Inverted Index):倒排索引是實(shí)現(xiàn)“單詞-文檔矩陣”的一種具體存儲(chǔ)形式,通過(guò)倒排索引,可以根據(jù)單詞快速獲取包含這個(gè)單詞的文檔列表。倒排索引主要由兩個(gè)部分組成:“單詞詞典”和“倒排文件”。
單詞詞典(Lexicon):搜索引擎的通常索引單位是單詞,單詞詞典是由文檔集合中出現(xiàn)過(guò)的所有單詞構(gòu)成的字符串集合,單詞詞典內(nèi)每條索引項(xiàng)記載單詞本身的一些信息以及指向“倒排列表”的指針。
倒排列表(PostingList):倒排列表記載了出現(xiàn)過(guò)某個(gè)單詞的所有文檔的文檔列表及單詞在該文檔中出現(xiàn)的位置信息,每條記錄稱為一個(gè)倒排項(xiàng)(Posting)。根據(jù)倒排列表,即可獲知哪些文檔包含某個(gè)單詞。
倒排文件(Inverted File):所有單詞的倒排列表往往順序地存儲(chǔ)在磁盤(pán)的某個(gè)文件里,這個(gè)文件即被稱之為倒排文件,倒排文件是存儲(chǔ)倒排索引的物理文件。
四、企業(yè)中為什么不直接使用Lucene
1、Lucene的內(nèi)建不支持分布式
- Lucene是作為嵌入的類庫(kù)形式使用的,本身是沒(méi)有對(duì)分布式支持。
2、區(qū)間范圍搜索速度非常緩慢
- Lucene的區(qū)間范圍搜索API是擴(kuò)展補(bǔ)充的,對(duì)于在單個(gè)文檔中term出現(xiàn)比較多的情況,搜索速度會(huì)變得很慢
- Lucene只有在數(shù)據(jù)生成索引文件之后(Segment),才能被查詢到,做不到實(shí)時(shí)
3、可靠性無(wú)法保障
- 無(wú)法保障Segment索引段的可靠性
- 📢博客主頁(yè):https://lansonli.blog.csdn.net
- 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 如有錯(cuò)誤敬請(qǐng)指正!
- 📢本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客🙉
- 📢大數(shù)據(jù)系列文章會(huì)每天更新,停下休息的時(shí)候不要忘了別人還在奔跑,希望大家抓緊時(shí)間學(xué)習(xí),全力奔赴更美好的生活?
總結(jié)
以上是生活随笔為你收集整理的2021年大数据ELK(三):Lucene全文检索库介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021年大数据ELK(二):Elast
- 下一篇: 2021年大数据ELK(四):Lucen