真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lucene全文索引是什么

本篇內(nèi)容主要講解“l(fā)ucene全文索引是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“l(fā)ucene全文索引是什么”吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、蘭考網(wǎng)站維護(hù)、網(wǎng)站推廣。

一、Lucene介紹及應(yīng)用

Apache Lucene是當(dāng)下最為流行的開源全文檢索工具包,基于JAVA語言編寫。

目前基于此工具包開源的搜索引擎,成熟且廣為人知的有Solr和Elasticsearch。2010年后Lucene和Solr兩個(gè)項(xiàng)目由同一個(gè)Apache軟件基金會(huì)的開發(fā)團(tuán)隊(duì)制作,所以通常我們看到的版本都是同步的。二者的區(qū)別是Lucene是工具包,而Solr是基于Lucene制作的企業(yè)級(jí)搜索應(yīng)用。另外,我們常用的Eclipse,幫助系統(tǒng)的搜索功能也是基于Lucene實(shí)現(xiàn)的。

二、Lucene的兩項(xiàng)工作

在我們的生活物品中,漢語字典與全文索引是很相似的。我們拿拼音查字法舉例,首先我們通過拼音找到我們要查字的頁數(shù),然后翻到該頁,閱讀這個(gè)字的詳細(xì)解釋。

在上面的例子中,我們提到了兩個(gè)要素:一個(gè)是字典,另一個(gè)是查字的過程。對(duì)應(yīng)到Lucene的功能上,一個(gè)是我們要建立一個(gè)字典,這個(gè)過程叫做建立索引,另一個(gè)是根據(jù)搜索詞基于索引進(jìn)行查詢。

2.1 建立索引

1)文檔的準(zhǔn)備(Document)

文檔就是指我們要去搜索的原文。

2)分詞組件(Tokenizer)

將第一步的文檔進(jìn)行詞語切割,去除標(biāo)點(diǎn),去除無用詞,比如“是”,“的”等。常用的開源中文分詞組件有MMSEG4J、IKAnalyzer等。切割后的詞語我們稱為詞元(Token)。

3)語言處理(Linguistic Processor)

將上一步的獲得的詞元進(jìn)行處理,比如英文的大寫轉(zhuǎn)小寫,復(fù)數(shù)變單數(shù),過去時(shí)分詞轉(zhuǎn)原形等。此時(shí)得到的結(jié)果,被稱作詞(Term)

4)索引組件

索引組件將上步得到的詞,生成索引和詞典,存儲(chǔ)到磁盤上。索引組件先將Term變成字典,然后對(duì)字典進(jìn)行排序,排序后對(duì)相同的詞進(jìn)行合并,形成倒排列表。每個(gè)詞在列表中存儲(chǔ)了對(duì)應(yīng)的文檔Id(Document Frequency)以及這個(gè)詞在這個(gè)文檔中出現(xiàn)了幾次(Term Frequency)。

2.2 搜索

1)輸入查詢?cè)~

2)詞法分析及語言處理

對(duì)輸入的詞進(jìn)行拆分,關(guān)鍵字識(shí)別(AND,NOT)等。對(duì)拆分的詞元進(jìn)行語言處理,與建立字典時(shí)語言處理的過程相同。由關(guān)鍵字與處理后的詞生成語法樹。

3)搜索索引,獲得符合語法樹的文檔

如A and B not C形成的語法樹,則會(huì)搜索包含A B C的文檔列表,然后用A和B的文檔列表做交集,結(jié)果集與C做差集,得到的結(jié)果,就是符合搜索條件的文檔列表

4)根據(jù)相關(guān)性,對(duì)搜索結(jié)果排序

通過向量空間模型的算法,得到結(jié)果的相關(guān)性。比較簡單的實(shí)現(xiàn)描述如下:在建立索引的時(shí)候,我們得到了Document Frequency和Term Frequency,Term Frequency越高,說明文檔的相關(guān)性越高;Document Frequency越高,說明相關(guān)性越弱。這個(gè)算法可以自己進(jìn)行實(shí)現(xiàn)。

5)根據(jù)上面的排序結(jié)果,返回文檔。

三、索引結(jié)構(gòu)

Lucene的索引結(jié)構(gòu)是有層次結(jié)構(gòu)的。我們以下圖為例

lucene全文索引是什么

3.1 索引(Index)

如果拿數(shù)據(jù)庫做類比,索引類似于數(shù)據(jù)庫的表。

在Lucene中一個(gè)索引是放在一個(gè)文件夾中的。所以可以理解索引為整個(gè)文件夾的內(nèi)容。

3.2 段(Segment)

如果拿數(shù)據(jù)庫做類比,段類似于表的分區(qū)。

索引下面引入了Segment 的概念,一個(gè)索引下可以多個(gè)段。當(dāng)flush或者commit時(shí)生成段文件。截圖中有0,1兩個(gè)段。segments.gen和segments_5是段的元數(shù)據(jù)文件,它們保存了段的屬性信息。其他的文件對(duì)應(yīng)的就是各段的文件,稍后會(huì)詳細(xì)說明各文件的用處。

索引的寫入是順序的,只能被追加,不能被修改。當(dāng)索引要?jiǎng)h除時(shí),在.del文件中寫入對(duì)應(yīng)的docId。查詢的時(shí)候會(huì)過濾到此docId。另外索引的修改,是對(duì)Document進(jìn)行刪除后做的追加。這種設(shè)計(jì)保證了高吞吐量。

分段的設(shè)計(jì)能保證查詢的高效,當(dāng)段太大時(shí),查詢會(huì)產(chǎn)生很大的IO消耗。段太小,則需要查詢的段太多。所以lucene對(duì)段進(jìn)行了合并,另外刪除的數(shù)據(jù)也是在合并過程中過濾掉的。4.0之前的默認(rèn)的合并策略為LogMergePolicy,這個(gè)策略會(huì)合并小于指定值的相鄰段,如果兩個(gè)相鄰段,一個(gè)大小為1G,一個(gè)大小為1k,則會(huì)重寫1G的文件會(huì)占用很大資源。4.0之后默認(rèn)策略改為了TieredMergePolicy,這個(gè)策略會(huì)先按分段大小進(jìn)行排序,對(duì)段進(jìn)行刪除比計(jì)算,優(yōu)先合并小的分段。當(dāng)系統(tǒng)閑暇的時(shí)候,才對(duì)大分段進(jìn)行合并。

3.3 文檔(Document)

如果拿數(shù)據(jù)庫做類比,文檔類似于數(shù)據(jù)的一行。

Document是索引的基本單位。一個(gè)段可以有多個(gè)Document

3.4 域(Field)

如果拿數(shù)據(jù)庫做類比,域相當(dāng)于表的字段。

Doument里可以有多個(gè)Field。Lucene提供多種不同類型的Field,例如StringField、TextField、LongFiled或NumericDocValuesField等。

3.5 詞(Term)

Term是索引的最小單位。Term是由Field經(jīng)過Analyzer(分詞)產(chǎn)生。

四、段的文件說明

segments_N保存了此索引包含多少個(gè)段,每個(gè)段包含多少篇文檔。

*.fnm

保存了此段包含了多少個(gè)域,每個(gè)域的名稱及索引方式。

*.fdx,*.fdt

保存了此段包含的所有文檔,每篇文檔包含了多少域,每個(gè)域保存了那些信息。

*.tvx,*.tvd,*.tvf

保存了此段包含多少文檔,每篇文檔包含了多少域,每個(gè)域包含了多少詞,每個(gè)詞的字符串,位置等信息。

*.tis,*.tii

保存了詞典(Term Dictionary),也即此段包含的所有的詞按字典順序的排序。

*.frq

保存了倒排表,也即包含每個(gè)詞的文檔ID列表。

*.prx

保存了倒排表中每個(gè)詞在包含此詞的文檔中的位置

*.del

前面講段的時(shí)候有提到,用來是存儲(chǔ)刪掉文檔id的。

到此,相信大家對(duì)“l(fā)ucene全文索引是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:lucene全文索引是什么
網(wǎng)頁地址:http://weahome.cn/article/ggjejp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部