溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何理解Lucene的簡(jiǎn)介與索引過(guò)程

發(fā)布時(shí)間:2021-11-22 18:11:15 來(lái)源:億速云 閱讀:140 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了如何理解Lucene的簡(jiǎn)介與索引過(guò)程,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

Lucene的介紹與使用


Lucene簡(jiǎn)介

Lucene是Doug Cutting利用周末時(shí)間所開(kāi)發(fā)的全文檢索引擎,Doug Cutting主導(dǎo)開(kāi)發(fā)了Lucene與Nutch,而基于Nutch中分離出的Hadoop在Yahoo成立Hadoop項(xiàng)目組,繼續(xù)主導(dǎo)推動(dòng)Hadoop的研發(fā)。Lucene不是一個(gè)應(yīng)用軟件,而是類(lèi)似于一個(gè)全文檢索的函數(shù)庫(kù),他為應(yīng)用軟件提供了基礎(chǔ)了函數(shù)接口,實(shí)現(xiàn)文檔到檢索的API。


什么是全文檢索?

首先考慮數(shù)據(jù)類(lèi)型問(wèn)題。
1. 結(jié)構(gòu)化數(shù)據(jù) 能夠具有固定的格式,長(zhǎng)度的數(shù)據(jù)。如數(shù)據(jù)庫(kù)。
2. 非結(jié)構(gòu)化數(shù)據(jù) 數(shù)據(jù)無(wú)定長(zhǎng),無(wú)嚴(yán)格的格式劃分,無(wú)schema信息等.如 日志,郵件,文檔等。
解決非結(jié)構(gòu)化的數(shù)據(jù)檢索的問(wèn)題數(shù)據(jù)庫(kù)方式也可以。但是效率較低。那么對(duì)于該類(lèi)日志的使用場(chǎng)景基本上屬于基于內(nèi)容的檢索。

全文檢索的應(yīng)用場(chǎng)景問(wèn)題
1. 日志分析: 對(duì)于沒(méi)有定義詳細(xì)結(jié)構(gòu)的日志數(shù)據(jù)的分析.例如基于關(guān)鍵詞查詢(xún)。(當(dāng)前我司的日志數(shù)據(jù)就是這種方式,日志輸出較為隨意,通過(guò)某些關(guān)鍵詞進(jìn)行檢索日志中的異常問(wèn)題)
2. 搜索引擎搜索: 搜索引擎的全文檢索是典型的場(chǎng)景,同樣是通過(guò)關(guān)鍵詞來(lái)檢索到爬蟲(chóng)抓取到的網(wǎng)頁(yè),文檔等相關(guān)內(nèi)容
3. 電商搜索: 對(duì)于電商站內(nèi)的商品進(jìn)行基于類(lèi)別,標(biāo)題,內(nèi)容的相關(guān)性商品的檢索等

Lucene實(shí)現(xiàn)全文檢索

如何理解Lucene的簡(jiǎn)介與索引過(guò)程

基于上圖得到如果需要使用Lucene進(jìn)行全文檢索的整體流程。

基于上圖分解

  1. 原始文檔:
    原始文檔可以是網(wǎng)頁(yè),郵件,word文檔等內(nèi)容.那么Lucene不提供相關(guān)的網(wǎng)頁(yè)數(shù)據(jù)的抓取,但是Doug Cutting開(kāi)發(fā)了Nutch提供了網(wǎng)絡(luò)爬蟲(chóng)的功能。下面介紹一些常見(jiàn)的爬蟲(chóng)工具
    1.1:Nutch: Doug Cutting開(kāi)發(fā)的網(wǎng)絡(luò)爬蟲(chóng)工具,實(shí)現(xiàn)分布式網(wǎng)頁(yè)數(shù)據(jù)采集功能。
    1.2:Scrapy: Python領(lǐng)域?qū)I(yè)的爬蟲(chóng)開(kāi)發(fā)框架,已經(jīng)完成了常用的爬蟲(chóng)工具。
    1.3:WebMagic:Java方向基于Scrapy的思想開(kāi)發(fā)的網(wǎng)絡(luò)爬蟲(chóng)庫(kù),在Java方向有非常高的人氣。 ...

  2. 創(chuàng)建文檔對(duì)象:
    創(chuàng)建文檔對(duì)象是為了能夠?qū)崿F(xiàn)檢索即可獲得到該文檔內(nèi)容。例如搜索引擎搜索 "PHP是世界上最好的語(yǔ)言" 即可獲取到某篇網(wǎng)頁(yè)內(nèi)容,網(wǎng)頁(yè)內(nèi)容即可定義為文檔對(duì)象。那么這里我們就把一個(gè)網(wǎng)頁(yè)定義為一個(gè)文檔對(duì)象(Document),每個(gè)文檔對(duì)象中又包含各種的Field(標(biāo)題,內(nèi)容,時(shí)間,作者等).當(dāng)然在網(wǎng)頁(yè)采集中盡量提取能夠獲取到的Field,而類(lèi)似于谷歌,百度等都會(huì)有相應(yīng)的規(guī)則,能夠讓爬蟲(chóng)程序識(shí)別到哪里是 標(biāo)題,內(nèi)容等。但是每個(gè)文檔都會(huì)有唯一的地址,例如網(wǎng)頁(yè)的網(wǎng)址

  3. 分析文檔內(nèi)容:
    分析文檔內(nèi)容即把文檔中的各種Field中的內(nèi)容進(jìn)行分析,進(jìn)行分詞、大小寫(xiě)轉(zhuǎn)換、特殊符號(hào)過(guò)濾、去除停用詞等使其生成最終的詞匯單元,也就是一個(gè)個(gè)的單詞。
    比如:
    PHP是世界上最好的語(yǔ)言
    分詞后的詞匯單元為:
    PHP、世界上、最好、語(yǔ)言

    每個(gè)單詞叫做Term,不同的Document、Field中拆分出不同的Term。Term中包含DOcumentID與單詞內(nèi)容。

  4. 創(chuàng)建索引:
    創(chuàng)建索引的目的是為了檢索到相關(guān)的文檔,所以全文檢索最終的Term其實(shí)最終要定位到一個(gè)Document。那么簡(jiǎn)單來(lái)想索引庫(kù)中包含的Term基本上會(huì)有多個(gè)DocumentId用來(lái)定位該Term可檢索到的文檔。
    簡(jiǎn)單的可以為:

    TemrsDocumentId
    PHPdoc_1,doc_2,doc_3
    世界doc_1,doc_3
    語(yǔ)言doc_2,doc_3

至此Lucene的索引即構(gòu)建完成,索引庫(kù)建立即可通過(guò)Lucene提供的檢索Api進(jìn)行數(shù)據(jù)的檢索。

上述內(nèi)容就是如何理解Lucene的簡(jiǎn)介與索引過(guò)程,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI