1. 程式人生 > >Elasticsearch倒排索引

Elasticsearch倒排索引

Elasticsearch,分散式,高效能,高可用,可伸縮的搜尋和分析系統

1、什麼是搜尋?
2、如果用資料庫做搜尋會怎麼樣?
3、什麼是全文檢索、倒排索引和Lucene?
4、什麼是Elasticsearch?

1、什麼是搜尋?

百度:我們比如說想找尋任何的資訊的時候,就會上百度去搜索一下,比如說找一部自己喜歡的電影,或者說找一本喜歡的書,或者找一條感興趣的新聞(提到搜尋的第一印象)
百度 != 搜尋,這是不對的

垂直搜尋(站內搜尋)

網際網路的搜尋:電商網站,招聘網站,新聞網站,各種app
IT系統的搜尋:OA軟體,辦公自動化軟體,會議管理,日程管理,專案管理,員工管理,搜尋“張三”,“張三兒”,“張小三”;有個電商網站,賣家,後臺管理系統,搜尋“牙膏”,訂單,“牙膏相關的訂單”

搜尋,就是在任何場景下,找尋你想要的資訊,這個時候,會輸入一段你要搜尋的關鍵字,然後就期望找到這個關鍵字相關的有些資訊

2、如果用資料庫做搜尋會怎麼樣?

做軟體開發的話,或者對IT、計算機有一定的瞭解的話,都知道,資料都是儲存在資料庫裡面的,比如說電商網站的商品資訊,招聘網站的職位資訊,新聞網站的新聞資訊,等等吧。所以說,很自然的一點,如果說從技術的角度去考慮,如何實現如說,電商網站內部的搜尋功能的話,就可以考慮,去使用資料庫去進行搜尋。

1、比方說,每條記錄的指定欄位的文字,可能會很長,比如說“商品描述”欄位的長度,有長達數千個,甚至數萬個字元,這個時候,每次都要對每條記錄的所有文字進行掃描,懶判斷說,你包不包含我指定的這個關鍵詞(比如說“牙膏”)
2、還不能將搜尋詞拆分開來,儘可能去搜索更多的符合你的期望的結果,比如輸入“生化機”,就搜尋不出來“生化危機”

用資料庫來實現搜尋,是不太靠譜的。通常來說,效能會很差的。

3、什麼是全文檢索和Lucene?

(1)全文檢索,倒排索引
(2)lucene,就是一個jar包,裡面包含了封裝好的各種建立倒排索引,以及進行搜尋的程式碼,包括各種演算法。我們就用java開發的時候,引入lucene jar,然後基於lucene的api進行去進行開發就可以了。用lucene,我們就可以去將已有的資料建立索引,lucene會在本地磁碟上面,給我們組織索引的資料結構。另外的話,我們也可以用lucene提供的一些功能和api來針對磁碟上額

4、什麼是Elasticsearch?

(1)圖解分析

如果用資料庫檢索
資料庫檢索

什麼是ElasticSearch
這裡寫圖片描述

全文檢索
這裡寫圖片描述