本篇內(nèi)容介紹了“Solr簡述及倒排索引用法介紹”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了寧縣免費建站歡迎大家使用!
一、Solr簡述
1、Solr是什么?
Solr是一個Java開發(fā)的基于Lucene的開源搜索平臺,其搜索技術(shù)核心是使用倒排索引,即通過關(guān)鍵字映射到對應(yīng)的文檔(value--key),與一般搜索用到的key--value不同。
Solr內(nèi)的資源存儲是以文檔Document為對象進行存儲,文檔的內(nèi)容是由多個表示資源屬性的Field構(gòu)成的。Solr是將文檔中的Field經(jīng)過分詞后作為索引,用二分法將關(guān)鍵字與排序號的索引進行匹配,進而查找到對應(yīng)文檔,提供高性能的搜索效率。每個文檔都通過唯一的id字段來表示該文檔。
2、為什么使用Solr?
由于傳統(tǒng)電商多數(shù)使用傳統(tǒng)搜索,即傳統(tǒng)搜索是從靜態(tài)數(shù)據(jù)庫中篩選出符合條件的結(jié)果,這種結(jié)果往往是不可變得、靜態(tài)的。而通常電商系統(tǒng)中需要提供搜索功能,通過任意關(guān)鍵字搜索出匹配的結(jié)果。而這些任意的數(shù)據(jù)不可能是根據(jù)數(shù)據(jù)庫的字段查詢的,所以需要利用全文搜索工具提前對數(shù)據(jù)進行分詞,然后通過分詞的結(jié)果,根據(jù)分詞搜索到對應(yīng)的文檔,向用戶反饋搜索結(jié)果。而Solr就能通過倒排索引功能,技術(shù),結(jié)合IKanalyzer中文分詞器實現(xiàn)這樣的搜索功能。
3、Solr、elasticsearch與Lucene三者聯(lián)系與區(qū)別
(1)三者介紹
Lucene是一套信息檢索工具包,并不包含搜索引擎系統(tǒng),它包含了索引結(jié)構(gòu)、讀寫索引工具、相關(guān)性工具、排序等功能,因此在使用Lucene時仍需要關(guān)注搜索引擎系統(tǒng),例如數(shù)據(jù)獲取、解析、分詞等方面的東西。
Solr是一個有HTTP接口的基于Lucene的搜索平臺,封裝了很多Lucene細節(jié),自己的應(yīng)用可以直接利用HTTP GET/POST請求去實現(xiàn)搜索,進行維護修改索引。
Elasticsearch也是一個建立在全文搜索引擎 Apache Lucene基礎(chǔ)上的搜索引擎。采用的策略是分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索。
(2)聯(lián)系與區(qū)別
三者聯(lián)系:solr和elasticsearch都是基于Lucene工具包做的一些封裝。
solr和elasticsearch的區(qū)別:
A. solr利用zookeeper進行分布式管理,而elasticsearch自身帶有分布式協(xié)調(diào)管理功能;
B. solr比elasticsearch實現(xiàn)更加全面,solr官方提供的功能更多,而elasticsearch本身更注重于核心功能,高級功能多由第三方插件提供;
C. solr在傳統(tǒng)的搜索應(yīng)用中表現(xiàn)好于elasticsearch,而elasticsearch在實時搜索應(yīng)用方面比solr表現(xiàn)好
二、倒排索引介紹
1、索引(index) 的定義
一個索引文件(index)包含了一連串的文檔(Documents),一個文檔(document)是由一連串fields(字段)組成,一個fields(字段)可以被分詞成由一連串的term(單詞/字符串)。
2、倒排索引
索引(index)存儲單詞(terms)的統(tǒng)計數(shù)據(jù),為了使得基于term的檢索效率更高。倒排索引是實現(xiàn)“單詞-文檔矩陣”的一種具體存儲形式,通過倒排索引,可以根據(jù)單詞快速獲取包含這個單詞的文檔列表。
(1)倒排索引組成:主要由單詞詞典和倒排文件組成
a. 單詞詞典:
單詞詞典是由文檔集合中出現(xiàn)過的所有單詞構(gòu)成的字符串集合。首先Solr的文檔指的是代表以文本形式存在的存儲對象,除了網(wǎng)頁外,還包含Word,PDF,html,XML等不同格式的文件、甚至郵件,微博等都可以稱之為文檔。每個文檔有自己唯一的文檔ID。Solr經(jīng)過分詞器將文檔中的Field分詞后,將重復(fù)的單詞去重,這些單詞的集合就構(gòu)成了單詞詞典。每個單詞也有唯一的單詞ID。
b. 倒排文件
倒排文件是存儲倒排列表的物理文件,存儲在磁盤中。倒排列表記載了出現(xiàn)過某個單詞的所有文檔的文檔列表及單詞在該文檔中出現(xiàn)的位置信息、出現(xiàn)頻率,每條記錄稱為一個倒排項,多個倒排項構(gòu)成倒排列表。
(2)倒排索引原理
首先要用分詞系統(tǒng)將文檔自動切分成單詞序列。這樣每個文檔就轉(zhuǎn)換為由單詞序列構(gòu)成的數(shù)據(jù)流,每個不同的單詞有唯一的單詞編號,同時記錄下倒排列表(出現(xiàn)這個單詞的文檔ID,出單詞該ID的文檔出現(xiàn)的頻率 ,出現(xiàn)的位置(文檔第幾個單詞出現(xiàn))),記錄每個單詞對應(yīng)的“文檔頻率信息”(在幾個文檔這中出現(xiàn)過),在如此處理結(jié)束后,我們可以得到倒排索引。
倒排索引存儲結(jié)構(gòu)如下圖所示。
總結(jié):倒排索引存儲結(jié)構(gòu)一般為:詞項的字符串ID+詞項的字符串+詞項的文檔頻率+倒排列表(詞項的文檔ID+記錄詞項的頻率信息+記錄詞項的位置信息)。倒排索引它記錄的是詞,和詞所存在的文檔id以及倒排列表。通過這種索引結(jié)構(gòu)的存儲方式,其查詢速率可想而知。
“Solr簡述及倒排索引用法介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!