先了解一下資料的分類
結構化資料
又可以稱之為行資料,儲存在資料庫裡,可以用二維表結構來邏輯表達實現的資料。其實就是可以能夠用資料或者統一的結構加以表示的資料。比如在資料表儲存商品的庫存,可以用整型表示,儲存價格可以用浮點型表示,再比如給使用者儲存性別,可以用列舉表示,這都是結構化資料。
非結構化資料
無法用數字或者統一的結構表示的資料,稱之為飛結構化資料。如:文字、影象、聲音、網頁。
其實結構化資料又資料非結構化資料。商品標題、描述、文章描述都是文字,其實文字就是非結構化資料。那麼就可以說非結構化資料即為全文資料。
什麼是全文檢索?
一種將檔案或者資料庫中所有文字與檢索項相匹配的文字資料檢索方法,稱之為全文檢索。
全文檢索的兩種方法
順序掃描法:將資料表的所有資料逐個掃描,再對文字描述掃描,符合條件的篩選出來,非常慢!
索引掃描法:全文檢索的基本思路,也就是將非結構化資料中的一部分資訊提取出來,重新組織,使其變得有一定結構,然後對此有一定結構的資料進行搜尋,從而達到搜尋相對快的目的。
全文檢索的過程:
先索引的建立,然後索引搜尋
為什麼要選擇用ElasticSearch?
全文搜尋屬於最常見的需求,開源的 Elasticsearch (以下簡稱 Elastic)是目前全文搜尋引擎的首選。
Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫程式碼去呼叫它的介面。Elastic 是 Lucene 的封裝,提供了 REST API 的操作介面,開箱即用。
分散式的實時檔案儲存,每個欄位都被索引可被搜尋。
分散式的實時分析搜尋引擎。
可以擴充套件到上百臺伺服器,處理PB級別結構化或者非結構化資料。
所有功能整合在一個伺服器裡,可以通過RESTful API、各種語言的客戶端甚至命令與之互動。
上手容易,提供了很多合理的預設值,開箱即用,學習成本低。
可以免費下載、使用和修改。
配置靈活,比Sphinx靈活的多。