溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Solr簡述及倒排索引用法介紹

發(fā)布時間:2021-08-31 18:33:46 來源:億速云 閱讀:132 作者:chen 欄目:大數(shù)據(jù)

本篇內容介紹了“Solr簡述及倒排索引用法介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、Solr簡述

1、Solr是什么?

     Solr是一個Java開發(fā)的基于Lucene的開源搜索平臺,其搜索技術核心是使用倒排索引,即通過關鍵字映射到對應的文檔(value--key),與一般搜索用到的key--value不同。

     Solr內的資源存儲是以文檔Document為對象進行存儲,文檔的內容是由多個表示資源屬性的Field構成的。Solr是將文檔中的Field經(jīng)過分詞后作為索引,用二分法將關鍵字與排序號的索引進行匹配,進而查找到對應文檔,提供高性能的搜索效率。每個文檔都通過唯一的id字段來表示該文檔。

2、為什么使用Solr?

    由于傳統(tǒng)電商多數(shù)使用傳統(tǒng)搜索,即傳統(tǒng)搜索是從靜態(tài)數(shù)據(jù)庫中篩選出符合條件的結果,這種結果往往是不可變得、靜態(tài)的。而通常電商系統(tǒng)中需要提供搜索功能,通過任意關鍵字搜索出匹配的結果。而這些任意的數(shù)據(jù)不可能是根據(jù)數(shù)據(jù)庫的字段查詢的,所以需要利用全文搜索工具提前對數(shù)據(jù)進行分詞,然后通過分詞的結果,根據(jù)分詞搜索到對應的文檔,向用戶反饋搜索結果。而Solr就能通過倒排索引功能,技術,結合IKanalyzer中文分詞器實現(xiàn)這樣的搜索功能。

3、Solr、elasticsearch與Lucene三者聯(lián)系與區(qū)別

(1)三者介紹

    Lucene是一套信息檢索工具包,并不包含搜索引擎系統(tǒng),它包含了索引結構、讀寫索引工具、相關性工具、排序等功能,因此在使用Lucene時仍需要關注搜索引擎系統(tǒng),例如數(shù)據(jù)獲取、解析、分詞等方面的東西。

    Solr是一個有HTTP接口的基于Lucene的搜索平臺,封裝了很多Lucene細節(jié),自己的應用可以直接利用HTTP GET/POST請求去實現(xiàn)搜索,進行維護修改索引。

    Elasticsearch也是一個建立在全文搜索引擎 Apache Lucene基礎上的搜索引擎。采用的策略是分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索。

(2)聯(lián)系與區(qū)別

    三者聯(lián)系:solr和elasticsearch都是基于Lucene工具包做的一些封裝。

    solr和elasticsearch的區(qū)別:

  • A. solr利用zookeeper進行分布式管理,而elasticsearch自身帶有分布式協(xié)調管理功能;

  • B. solr比elasticsearch實現(xiàn)更加全面,solr官方提供的功能更多,而elasticsearch本身更注重于核心功能,高級功能多由第三方插件提供;

  • C. solr在傳統(tǒng)的搜索應用中表現(xiàn)好于elasticsearch,而elasticsearch在實時搜索應用方面比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)過的所有單詞構成的字符串集合。首先Solr的文檔指的是代表以文本形式存在的存儲對象,除了網(wǎng)頁外,還包含Word,PDF,html,XML等不同格式的文件、甚至郵件,微博等都可以稱之為文檔。每個文檔有自己唯一的文檔ID。Solr經(jīng)過分詞器將文檔中的Field分詞后,將重復的單詞去重,這些單詞的集合就構成了單詞詞典。每個單詞也有唯一的單詞ID。

    b. 倒排文件

        倒排文件是存儲倒排列表的物理文件,存儲在磁盤中。倒排列表記載了出現(xiàn)過某個單詞的所有文檔的文檔列表及單詞在該文檔中出現(xiàn)的位置信息、出現(xiàn)頻率,每條記錄稱為一個倒排項,多個倒排項構成倒排列表。

(2)倒排索引原理

        首先要用分詞系統(tǒng)將文檔自動切分成單詞序列。這樣每個文檔就轉換為由單詞序列構成的數(shù)據(jù)流,每個不同的單詞有唯一的單詞編號,同時記錄下倒排列表(出現(xiàn)這個單詞的文檔ID,出單詞該ID的文檔出現(xiàn)的頻率 ,出現(xiàn)的位置(文檔第幾個單詞出現(xiàn))),記錄每個單詞對應的“文檔頻率信息”(在幾個文檔這中出現(xiàn)過),在如此處理結束后,我們可以得到倒排索引。

        倒排索引存儲結構如下圖所示。

Solr簡述及倒排索引用法介紹

    總結:倒排索引存儲結構一般為:詞項的字符串ID+詞項的字符串+詞項的文檔頻率+倒排列表(詞項的文檔ID+記錄詞項的頻率信息+記錄詞項的位置信息)。倒排索引它記錄的是詞,和詞所存在的文檔id以及倒排列表。通過這種索引結構的存儲方式,其查詢速率可想而知。

“Solr簡述及倒排索引用法介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

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

AI