基於ElasticSearch實現商品的全文檢索檢索
全文檢索
相關概念
資料分類;
結構化資料:行資料,儲存在資料庫裡,可以用二維表結構來邏輯表達實現的資料能夠用資料或統一的結構加以表示,可以用數字和符號加以表示
非結構化資料:無法用數字或統一的結構表示 文字、影象、聲音、網頁
結構化資料屬於非結構化資料,非結構化資料即為全文資料
全文檢索:一種將檔案中或者資料庫中所有文字與檢索項匹配的文字資料檢索方法,對全文資料的檢索
兩種方法:
順序掃描法:
索引掃描法
全文檢索的基本思路,也即將非結構化資料中的一部分資訊提取出來,重新組織,使其變得有一定結構,然後對此有一定結構的資料進行檢索,從而達到搜尋相對較快的目的
兩個過程
索引建立
索引中儲存了什麼 字典 索引只會建立一次
第一步:一些要索引的原文件
第二步:將原文件傳給分片語件
第三步:將得到的詞元(Token)傳給語言處理元件(Linguistic Process)
第四步:將得到的詞(Term)傳給索引元件(Indexer)
搜尋索引
第一步:使用者輸入查詢語句
第二步:對查詢語句進行詞法分析,語法分析及語言處理
第三步:搜尋索引,得到符合文件
全文檢索引擎
全文檢索引擎是目前廣泛應用的主流搜尋引擎
它的工作原理是計算機索引程式通過掃描文章中的每一個詞,對每個詞建立一個索引,指明該詞在文章中出現的次數和位置當用戶查詢時,檢索程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者的檢索方式
主流開源額全文檢索引擎
ElasticSearch相關概念
ElasticSearch 是一個基於Apache Lucene(TM)的開源搜尋引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、效能最好的、功能最全的搜尋引擎庫
為什是ElasticSerach
ElasticSearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜尋的功能,但是它的目的是通過簡單的Restful API來隱藏Lucene的複雜性,從而讓全文搜尋變得簡單
分散式的實時檔案儲存,每個欄位都被索引可被搜尋
分散式的實時分析搜尋引擎
可以擴充套件到奧上百臺伺服器,處理PB級結構化或非結構化資料
所有的功能整合在一個服務裡面,可以通過Restful api、各種語言的客戶端甚至命令列與之互動,上手容易,提供了很多合理的預設值,開箱即用,學習成本低。可免費下載、使用和修改、配置靈活
安裝Es同時安裝中文分片語件
全文檢索的測試
curl -XPOST "http://192.168.199.112:9200/_analyzer=ik&pretty" -d '這是一個商品的標題'