全文檢索學(xué)習(xí)

全文檢索學(xué)習(xí)

ID:36585507

大?。?.63 MB

頁數(shù):73頁

時(shí)間:2019-05-12

全文檢索學(xué)習(xí)_第1頁
全文檢索學(xué)習(xí)_第2頁
全文檢索學(xué)習(xí)_第3頁
全文檢索學(xué)習(xí)_第4頁
全文檢索學(xué)習(xí)_第5頁
資源描述:

《全文檢索學(xué)習(xí)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、-Elasticsearch入門一、全文檢索的基本原理Lucene是一個(gè)高效的,基于Java的全文檢索庫。所以在了解Lucene之前要費(fèi)一番工夫了解一下全文檢索。那么什么叫做全文檢索呢?這要從我們生活中的數(shù)據(jù)說起。我們生活中的數(shù)據(jù)總體分為兩種:結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù):指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫,元數(shù)據(jù)等。非結(jié)構(gòu)化數(shù)據(jù):指不定長或無固定格式的數(shù)據(jù),如郵件,word文檔等。當(dāng)然有的地方還會(huì)提到第三種,半結(jié)構(gòu)化數(shù)據(jù),如XML,HTML等,當(dāng)根據(jù)需要可按結(jié)構(gòu)化數(shù)據(jù)來處理,也可抽取出純文本按非結(jié)構(gòu)化數(shù)據(jù)來處理。非結(jié)構(gòu)化數(shù)

2、據(jù)又一種叫法叫全文數(shù)據(jù)。按照數(shù)據(jù)的分類,搜索也分為兩種:對(duì)結(jié)構(gòu)化數(shù)據(jù)的搜索:如對(duì)數(shù)據(jù)庫的搜索,用SQL語句。再如對(duì)元數(shù)據(jù)的搜索,如利用windows搜索對(duì)文件名,類型,修改時(shí)間進(jìn)行搜索等。對(duì)非結(jié)構(gòu)化數(shù)據(jù)的搜索:如利用windows的搜索也可以搜索文件內(nèi)容,Linux下的grep命令,再如用Google和百度可以搜索大量?jī)?nèi)容數(shù)據(jù)。---對(duì)非結(jié)構(gòu)化數(shù)據(jù)也即對(duì)全文數(shù)據(jù)的搜索主要有兩種方法:---一種是順序掃描法(SerialScanning):所謂順序掃描,比如要找內(nèi)容包含某一個(gè)字符串的文件,就是一個(gè)文檔一個(gè)文檔的看,對(duì)于每一個(gè)文檔,從頭看到尾

3、,如果此文檔包含此字符串,則此文檔為我們要找的文件,接著看下一個(gè)文件,直到掃描完所有的文件。如利用windows的搜索也可以搜索文件內(nèi)容,只是相當(dāng)?shù)穆H绻阌幸粋€(gè)80G硬盤,如果想在上面找到一個(gè)內(nèi)容包含某字符串的文件,不花他幾個(gè)小時(shí),怕是做不到。Linux下的grep命令也是這一種方式。大家可能覺得這種方法比較原始,但對(duì)于小數(shù)據(jù)量的文件,這種方法還是最直接,最方便的。但是對(duì)于大量的文件,這種方法就很慢了。有人可能會(huì)說,對(duì)非結(jié)構(gòu)化數(shù)據(jù)順序掃描很慢,對(duì)結(jié)構(gòu)化數(shù)據(jù)的搜索卻相對(duì)較快(由于結(jié)構(gòu)化數(shù)據(jù)有一定的結(jié)構(gòu)可以采取一定的搜索算法加快速度),那

4、么把我們的非結(jié)構(gòu)化數(shù)據(jù)想辦法弄得有一定結(jié)構(gòu)不就行了嗎?這種想法很天然,卻構(gòu)成了全文檢索的基本思路,也即將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來,重新組織,使其變得有一定結(jié)構(gòu),然后對(duì)此有一定結(jié)構(gòu)的數(shù)據(jù)進(jìn)行搜索,從而達(dá)到搜索相對(duì)較快的目的。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息,我們稱之索引。這種說法比較抽象,舉幾個(gè)例子就很容易明白,比如字典,字典的拼音表和部首檢字表就相當(dāng)于字典的索引,對(duì)每一個(gè)字的解釋是非結(jié)構(gòu)化的,如果字典沒有音節(jié)表和部首檢字表,在茫茫辭海中找一個(gè)字只能順序掃描。然而字的某些信息可以提取出來進(jìn)行結(jié)構(gòu)化處理,比如讀音,就

5、比較結(jié)構(gòu)化,分聲母和韻母,分別只有幾種可以一一列舉,于是將讀音拿出來按一定的順序排列,每一項(xiàng)讀音都指向---此字的詳細(xì)解釋的頁數(shù)。我們搜索時(shí)按結(jié)構(gòu)化的拼音搜到讀音,然后按其指向的頁數(shù),便可找到我們的非結(jié)構(gòu)化數(shù)據(jù)——也即對(duì)字的解釋。這種先建立索引,再對(duì)索引進(jìn)行搜索的過程就叫全文檢索(Full-textSearch)。下面這幅圖來自《Luceneinaction》,但卻不僅僅描述了Lucene的檢索過程,而是描述了全文檢索的一般過程。全文檢索大體分兩個(gè)過程,索引創(chuàng)建(Indexing)和搜索索引(Search)。------索引創(chuàng)建:將現(xiàn)實(shí)世

6、界中所有的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提取信息,創(chuàng)建索引的過程。---搜索索引:就是得到用戶的查詢請(qǐng)求,搜索創(chuàng)建的索引,然后返回結(jié)果的過程。于是全文檢索就存在三個(gè)重要問題:1.索引里面究竟存些什么?(Index)2.如何創(chuàng)建索引?(Indexing)3.如何對(duì)索引進(jìn)行搜索?(Search)下面我們順序?qū)γ總€(gè)個(gè)問題進(jìn)行研究。二、索引里面究竟存些什么索引里面究竟需要存些什么呢?首先我們來看為什么順序掃描的速度慢:其實(shí)是由于我們想要搜索的信息和非結(jié)構(gòu)化數(shù)據(jù)中所存儲(chǔ)的信息不一致造成的。非結(jié)構(gòu)化數(shù)據(jù)中所存儲(chǔ)的信息是每個(gè)文件包含哪些字符串,也即已知文件,欲求

7、字符串相對(duì)容易,也即是從文件到字符串的映射。而我們想搜索的信息是哪些文件包含此字符串,也即已知字符串,欲求文件,也即從字符串到文件的映射。兩者恰恰相反。于是如果索引總能夠保存從字符串到文件的映射,則會(huì)大大提高搜索速度。由于從字符串到文件的映射是文件到字符串映射的反向過程,于是保存這種信息的索引稱為反向索引。---反向索引的所保存的信息一般如下:假設(shè)我的文檔集合里面有100篇文檔,為了方便表示,我們?yōu)槲臋n編號(hào)從1到10,得到下面的結(jié)構(gòu)左邊保存的是一系列字符串,稱為詞典。---每個(gè)字符串都指向包含此字符串的文檔表(PostingList)。

8、(Document)鏈表,此文檔鏈表稱為倒排---有了索引,便使保存的信息和要搜索的信息一致,可以大大加快搜索的速度。比如說,我們要尋找既包含字符串“l(fā)ucene”又包含字符串“solr”的

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。