??近期,業主對POI檢索提出了一些想法,針對之前簡單的WordSegment分詞和模糊匹配搜索需要進行一些更為符合業主需求的調整。于是這幾天對搜索引擎進行了一些技術選型;
一、Apache Lucene
??Lucene是一個開源的高性能、可擴展的全文檢索引擎工具包,但不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。所以它是一套信息檢索工具包,可以說是當今最先進、最高效的全功能開源搜索引擎框架。使用起來相對復雜。
??參考: Lucene解析 - 基本概念
二、Elasticsearch
??Elasticsearch是一個實時的分布式搜索和分析引擎。可以快速處理大規模數據。可以用于全文搜索、結構化搜索和分析。
??使用:
??分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索;
??實時分析的分布式搜索引擎;
??可以擴展到上百臺服務器,處理PB級別的結構化或非結構化數據。
??案例:
??維基百科、英國衛報、StackOverFlow、Github、Goldman Sachs(股票分析)
??優點:
??1、 分布式,不需要其他組件,實時分發;
??2、 完全支持Apache Lucene的接近實時的搜索;
??3、 處理多租戶不需要特殊配置,而Solr則需要更多的高級設置;(多租戶技術)
??4、 采用Gateway的概念,使得完備份更加簡單;(gateway)
??5、 各節點組成對等的網絡結構,某些節點出現故障時會自動分配其他節點代替其進行工
????作。(分布式)
??缺點:
??沒有集成Lucene的新功能
三、Solr
??Solr是Apache Lucene項目的開源企業搜索平臺。主要功能包括全文檢索、命中標示、分面搜索、動態聚類、數據庫集成,以及富文本的處理。是高度可擴展的,并提供了分布式搜索和索引復制。是最流行的企業級搜索引擎。是一個獨立的全文搜索服務器。
??優點:
??1、 有一個更大、更成熟的用戶、開發和貢獻者社區;
??2、 不考慮建索引的同時進行搜索,速度更快;
??3、 支持添加多種格式的索引。
??缺點:
??建立索引時,搜索效率下降,實時索引搜索效率不高。
??對比
??單純的對已有數據進行搜索時,Solr更快
??實時建立索引時,Solr會產生io阻塞,查詢性能較差,Elasticsearch具有更明顯的優勢。
??總結
??相對來講,如果考慮靜態搜索,Sorl相對更合適;如果考慮實時,涉及到分布式,Elastic相對合適。