這篇文章主要講解了“Slor的基本概念和倒排索引介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Slor的基本概念和倒排索引介紹”吧!
創(chuàng)新互聯(lián)公司長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為博樂(lè)企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),博樂(lè)網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
Solr它是一種開(kāi)放源碼的、基于 Lucene Java 的搜索服務(wù)器,易于加入到 Web 應(yīng)用程序中。
Solr 提供了層面搜索(就是統(tǒng)計(jì))、命中醒目顯示并且支持多種輸出格式(包括XML/XSLT 和JSON等格式)。它易于安裝和配置,而且附帶了一個(gè)基于 HTTP 的管理界面。Solr已經(jīng)在眾多大型的網(wǎng)站中使用,較為成熟和穩(wěn)定。
Solr 包裝并擴(kuò)展了 Lucene,所以Solr的基本上沿用了Lucene的相關(guān)術(shù)語(yǔ)。更重要的是,Solr 創(chuàng)建的索引與 Lucene 搜索引擎庫(kù)完全兼容。
通過(guò)對(duì)Solr 進(jìn)行適當(dāng)?shù)呐渲?,某些情況下可能需要進(jìn)行編碼,Solr 可以閱讀和使用構(gòu)建到其他 Lucene 應(yīng)用程序中的索引。
此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 創(chuàng)建的索引??梢允褂?Solr 的表現(xiàn)優(yōu)異的基本搜索功能,也可以對(duì)它進(jìn)行擴(kuò)展從而滿足企業(yè)的需要。
高級(jí)的全文搜索功能;
專為高通量的網(wǎng)絡(luò)流量進(jìn)行的優(yōu)化;
基于開(kāi)放接口(XML和HTTP)的標(biāo)準(zhǔn);
綜合的HTML管理界面;
可伸縮性-能夠有效地復(fù)制到另外一個(gè)Solr搜索服務(wù)器;
使用XML配置達(dá)到靈活性和適配性;
可擴(kuò)展的插件體系。
Lucene中的基本概念是:index(索引),document(文檔),field(字段)和term(術(shù)語(yǔ))
一個(gè)索引文件(index)包含一連串的文檔(document);
一個(gè)文檔(document)是由一連串字段(fields),類似于數(shù)據(jù)庫(kù)中的一條記錄;
一個(gè)字段(field)由一連串的術(shù)語(yǔ)(terms)組成;
一個(gè)術(shù)語(yǔ)(term)是一個(gè)字符串
ps:相同的字符串在不同的fields被認(rèn)為是不同的term
index存儲(chǔ)terms的統(tǒng)計(jì)數(shù)據(jù),為了使得基于term的檢索效率更高。相對(duì)于oracle中索引(B-TREE)結(jié)構(gòu),solr搜索引擎中采用的是一種倒排索引。 倒排索引(Inverted Index):倒排索引是實(shí)現(xiàn)“單詞-文檔矩陣”的一種具體存儲(chǔ)形式,通過(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)表征文本信息。
中文和英文等語(yǔ)言不同,單詞之間沒(méi)有明確分隔符號(hào),所以首先要用分詞系統(tǒng)將文檔自動(dòng)切分成單詞序列。這樣每個(gè)文檔就轉(zhuǎn)換為由單詞序列構(gòu)成的數(shù)據(jù)流,為了系統(tǒng)后續(xù)處理方便,需要對(duì)每個(gè)不同的單詞賦予唯一的單詞編號(hào),同時(shí)記錄下哪些文檔包含這個(gè)單詞,在如此處理結(jié)束后,我們可以得到最簡(jiǎn)單的倒排索引。在圖中,“單詞ID”一欄記錄了每個(gè)單詞的單詞編號(hào),第二欄是對(duì)應(yīng)的單詞,第三欄即每個(gè)單詞對(duì)應(yīng)的倒排列表。比如單詞“谷歌”,其單詞編號(hào)為1,倒排列表為{1,2,3,4,5},說(shuō)明文檔集合中每個(gè)文檔都包含了這個(gè)單詞。
之所以說(shuō)上圖所示倒排索引是最簡(jiǎn)單的,是因?yàn)檫@個(gè)索引系統(tǒng)只記載了哪些文檔包含某個(gè)單詞,而事實(shí)上,索引系統(tǒng)還可以記錄除此之外的更多信息。下面這張圖是一個(gè)相對(duì)復(fù)雜些的倒排索引,與上圖的基本索引系統(tǒng)比,在單詞對(duì)應(yīng)的倒排列表中不僅記錄了文檔編號(hào),還記載了單詞頻率信息(TF),即這個(gè)單詞在某個(gè)文檔中的出現(xiàn)次數(shù)。下圖中,詞“創(chuàng)始人”的單詞編號(hào)為7,對(duì)應(yīng)的倒排列表內(nèi)容為:(3:1),其中的3代表文檔編號(hào)為3的文檔包含這個(gè)單詞,數(shù)字1代表詞頻信息,即這個(gè)單詞在3號(hào)文檔中只出現(xiàn)過(guò)1次,其它單詞對(duì)應(yīng)的倒排列表所代表含義與此相同。
實(shí)用的倒排索引還可以記載更多的信息,索引系統(tǒng)除了記錄文檔編號(hào)和單詞頻率信息外,額外記載了兩類信息,即每個(gè)單詞對(duì)應(yīng)的“文檔頻率信息”以及在倒排列表中記錄單詞在某個(gè)文檔出現(xiàn)的位置信息。
“文檔頻率信息”代表了在文檔集合中有多少個(gè)文檔包含某個(gè)單詞
以單詞“拉斯”為例,其單詞編號(hào)為8,文檔頻率為2,代表整個(gè)文檔集合中有兩個(gè)文檔包含這個(gè)單詞,對(duì)應(yīng)的倒排列表為:{(3;1;<4>),(5;1;<4>)},其含義為在文檔3和文檔5出現(xiàn)過(guò)這個(gè)單詞,單詞頻率都為1,單詞“拉斯”在兩個(gè)文檔中的出現(xiàn)位置都是4,即文檔中第四個(gè)單詞是“拉斯”。
收集待索引的原文檔
從數(shù)據(jù)庫(kù)、web等獲取原文檔
將原文檔交給分詞組件(Tokenizer)
此過(guò)程叫做Tokenize,得到的結(jié)果稱為T(mén)oken。 會(huì)做如下幾件事: a.將文檔分成一個(gè)個(gè)獨(dú)立的單詞 b.去除標(biāo)點(diǎn) b.去除停詞(stopword)
將得到的Token交給語(yǔ)言處理組件(LinguisticProcessor)
此過(guò)程處理的結(jié)果是Term 會(huì)做如下幾件事: a.轉(zhuǎn)為小寫(xiě) b.將單詞縮減為詞根,如cars-->car c.將單詞轉(zhuǎn)變?yōu)樵~根,如drove-->drive
將得到的Term交給索引組件(Indexer)
會(huì)做如下幾件事: a.將得到的Term創(chuàng)建字典 b.對(duì)字典按字母排序 c.合并相同的Term為倒排索引表
感謝各位的閱讀,以上就是“Slor的基本概念和倒排索引介紹”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Slor的基本概念和倒排索引介紹這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!