??近期问麸,業(yè)主對POI檢索提出了一些想法燥翅,針對之前簡單的WordSegment分詞和模糊匹配搜索需要進行一些更為符合業(yè)主需求的調(diào)整迈嘹。于是這幾天對搜索引擎進行了一些技術(shù)選型拿穴;
一泣洞、Apache Lucene
??Lucene是一個開源的高性能、可擴展的全文檢索引擎工具包默色,但不是一個完整的全文檢索引擎球凰,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎腿宰。所以它是一套信息檢索工具包呕诉,可以說是當(dāng)今最先進、最高效的全功能開源搜索引擎框架吃度。使用起來相對復(fù)雜甩挫。
??參考: Lucene解析 - 基本概念
二、Elasticsearch
??Elasticsearch是一個實時的分布式搜索和分析引擎椿每∫琳撸可以快速處理大規(guī)模數(shù)據(jù)〖浠ぃ可以用于全文搜索亦渗、結(jié)構(gòu)化搜索和分析。
??使用:
??分布式實時文件存儲汁尺,并將每一個字段都編入索引法精,使其可以被搜索;
??實時分析的分布式搜索引擎痴突;
??可以擴展到上百臺服務(wù)器搂蜓,處理PB級別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。
??案例:
??維基百科辽装、英國衛(wèi)報洛勉、StackOverFlow、Github如迟、Goldman Sachs(股票分析)
??優(yōu)點:
??1、 分布式,不需要其他組件殷勘,實時分發(fā)此再;
??2、 完全支持Apache Lucene的接近實時的搜索玲销;
??3输拇、 處理多租戶不需要特殊配置,而Solr則需要更多的高級設(shè)置贤斜;(多租戶技術(shù))
??4策吠、 采用Gateway的概念,使得完備份更加簡單瘩绒;(gateway)
??5猴抹、 各節(jié)點組成對等的網(wǎng)絡(luò)結(jié)構(gòu),某些節(jié)點出現(xiàn)故障時會自動分配其他節(jié)點代替其進行工
????作锁荔。(分布式)
??缺點:
??沒有集成Lucene的新功能
三蟀给、Solr
??Solr是Apache Lucene項目的開源企業(yè)搜索平臺。主要功能包括全文檢索阳堕、命中標(biāo)示跋理、分面搜索、動態(tài)聚類恬总、數(shù)據(jù)庫集成前普,以及富文本的處理。是高度可擴展的壹堰,并提供了分布式搜索和索引復(fù)制拭卿。是最流行的企業(yè)級搜索引擎。是一個獨立的全文搜索服務(wù)器缀旁。
??優(yōu)點:
??1记劈、 有一個更大、更成熟的用戶并巍、開發(fā)和貢獻者社區(qū)目木;
??2、 不考慮建索引的同時進行搜索懊渡,速度更快刽射;
??3、 支持添加多種格式的索引剃执。
??缺點:
??建立索引時誓禁,搜索效率下降,實時索引搜索效率不高肾档。
??對比
??單純的對已有數(shù)據(jù)進行搜索時摹恰,Solr更快
??實時建立索引時辫继,Solr會產(chǎn)生io阻塞,查詢性能較差俗慈,Elasticsearch具有更明顯的優(yōu)勢姑宽。
??總結(jié)
??相對來講,如果考慮靜態(tài)搜索闺阱,Sorl相對更合適炮车;如果考慮實時,涉及到分布式酣溃,Elastic相對合適瘦穆。