搜索引擎知識介紹和相關框架
什麼是搜索:在海量信息中獲取咱們想要的信息
傳統作法:
一、文檔中使用系統的Find查找
二、mysql中使用like模糊查詢
問題:
一、海量數據中不能及時響應,少許數據能夠經過傳統的MySql創建索引解決
二、一些無用詞不能進行過濾,無法分詞
三、數據量大的話難以拓展
四、相同的數據難以進行類似度最高的進行排序
搜索引擎:
一、存儲非結構化的數據
二、快速檢索和響應咱們須要的信息,快-準
三、進行相關性的排序,過濾等
四、能夠去掉停用詞(沒有特殊含義的詞,好比英文的a,is等,中文: 這,的,是等),框架通常支持能夠自定義停用詞java
經常使用框架:
一、Lucene
Apache下面的一個開源項目,高性能的、可擴展的工具庫,提供搜索的基本架構;
若是開發人員需用使用的話,需用本身進行開發,成本比較大,可是性能高mysql
二、solr
Solr基於Lucene的全文搜索框架,提供了比Lucene更爲豐富的功能,
同時實現了可配置、可擴展並對查詢性能進行了優化
創建索引時,搜索效率降低,實時索引搜索效率不高
數據量的增長,Solr的搜索效率會變得更低,適合小的搜索應用,對應java客戶端的是solrjweb
三、elasticSearch
基於Lucene的搜索框架, 它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口
上手容易,拓展節點方便,可用於存儲和檢索海量數據,接近實時搜索,海量數據量增長,搜索響應性能幾乎不受影響;
分佈式搜索框架,自動發現節點,副本機制,保障可用性sql
elasticSearch主要特色服務器
一、特色:全文檢索,結構化檢索,數據統計、分析,接近實時處理,分佈式搜索(可部署數百臺服務器),處理PB級別的數據
搜索糾錯,自動完成
二、使用場景:日誌搜索,數據聚合,數據監控,報表統計分析
三、國內外使用者:維基百科,Stack Overflow,GitHub架構