2. 什么是全文檢索
全文檢索是計(jì)算機(jī)程序通過掃描文章中的每一個(gè)詞掏颊,對每一個(gè)詞建立一個(gè)索引某抓,指明該詞在文章中出現(xiàn)的次數(shù)和位置揖膜。當(dāng)用戶查詢時(shí)根據(jù)建立的索引查找看锉,類似于通過字典的檢索字表查字的過程姿锭。
檢索: 索(建立索引) 檢:(檢索索引)
全文檢索(Full-Text Retrieval(檢索))以文本作為檢索對象,找出含有指定詞匯的文本伯铣。全面呻此、準(zhǔn)確和快速是衡量全文檢索系統(tǒng)的關(guān)鍵指標(biāo)。
關(guān)于全文檢索腔寡,我們要知道:
1. 只處理文本焚鲜。
2. 不處理語義。
3. 搜索時(shí)英文不區(qū)分大小寫。
4. 結(jié)果列表有相關(guān)度排序忿磅。
3. 什么是Elastic Search
ElasticSearch 簡稱 ES 糯彬,是基于Apache Lucene構(gòu)建的開源搜索引擎,是當(dāng)前流行的企業(yè)級搜索引擎葱她。Lucene本身就可以被認(rèn)為迄今為止性能最好的一款開源搜索引擎工具包撩扒,但是lucene的API相對復(fù)雜,需要深厚的搜索理論吨些。很難集成到實(shí)際的應(yīng)用中去搓谆。但是ES是采用java語言編寫,提供了簡單易用的RestFul API豪墅,開發(fā)者可以使用其簡單的RestFul API泉手,開發(fā)相關(guān)的搜索功能,從而避免lucene的復(fù)雜性偶器。
4. ES的誕生
多年前斩萌,一個(gè)叫做Shay Banon的剛結(jié)婚不久的失業(yè)開發(fā)者,由于妻子要去倫敦學(xué)習(xí)廚師状囱,他便跟著也去了术裸。在他找工作的過程中,為了給妻子構(gòu)建一個(gè)食譜的搜索引擎亭枷,他開始構(gòu)建一個(gè)早期版本的Lucene袭艺。
直接基于Lucene工作會比較困難,所以Shay開始抽象Lucene代碼以便Java程序員可以在應(yīng)用中添加搜索功能叨粘。他發(fā)布了他的第一個(gè)開源項(xiàng)目猾编,叫做“Compass”。
后來Shay找到一份工作升敲,這份工作處在高性能和內(nèi)存數(shù)據(jù)網(wǎng)格的分布式環(huán)境中答倡,因此高性能的、實(shí)時(shí)的驴党、分布式的搜索引擎也是理所當(dāng)然需要的瘪撇。然后他決定重寫Compass庫使其成為一個(gè)獨(dú)立的服務(wù)叫做Elasticsearch。
第一個(gè)公開版本出現(xiàn)在2010年2月港庄,在那之后Elasticsearch已經(jīng)成為Github上最受歡迎的項(xiàng)目之一倔既,代碼貢獻(xiàn)者超過300人。一家主營Elasticsearch的公司就此成立鹏氧,他們一邊提供商業(yè)支持一邊開發(fā)新功能渤涌,不過Elasticsearch將永遠(yuǎn)開源且對所有人可用。
Shay的妻子依舊等待著她的食譜搜索……
5. ES的應(yīng)用場景
ES主要以輕量級JSON作為數(shù)據(jù)存儲格式把还,這點(diǎn)與MongoDB有點(diǎn)類似实蓬,但它在讀寫性能上優(yōu)于 MongoDB 茸俭。同時(shí)也支持地理位置查詢 ,還方便地理位置和文本混合查詢 安皱。 以及在統(tǒng)計(jì)调鬓、日志類數(shù)據(jù)存儲和分析、可視化這方面是引領(lǐng)者练俐。
- 國外:
? Wikipedia(維基百科)使用ES提供全文搜索并高亮關(guān)鍵字袖迎、StackOverflow(IT問答網(wǎng)站)結(jié)合全文搜索與地理位置查詢、Github使用Elasticsearch檢索1300億行的代碼腺晾。
- 國內(nèi):
百度(在云分析燕锥、網(wǎng)盟、預(yù)測悯蝉、文庫归形、錢包、風(fēng)控等業(yè)務(wù)上都應(yīng)用了ES鼻由,單集群每天導(dǎo)入30TB+數(shù)據(jù)暇榴, 總共每天60TB+)、新浪 蕉世、阿里巴巴蔼紧、騰訊等公司均有對ES的使用。
使用比較廣泛的平臺ELK(ElasticSearch, Logstash, Kibana)奸例。