Manticore Search 是一個使用 C++ 開發的高性能搜索引擎,創建於 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,顯著改進了它的功能,修複了數百個錯誤,幾乎完全重寫了代碼並保持開源。這一切使 Manticore Se ...
Manticore Search 是一個使用 C++ 開發的高性能搜索引擎,創建於 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,顯著改進了它的功能,修複了數百個錯誤,幾乎完全重寫了代碼並保持開源。這一切使 Manticore Search 成為一個現代,快速,輕量級和功能齊全的資料庫,具有出色的全文搜索功能。
Manticore Search目前在GitHub收穫4.3k star,擁有大批忠實用戶。同時開源者在GitHub介紹中明確說明瞭該項目是是Elasticsearch的良好替代品,在不久的將來就會取代ELK中的E。
同時,來自 MS 官方的測試表明 Manticore Search 性能比 ElasticSearch 有質的提升:
在一定的場景中,Manticore 比 Elasticsearch 快 15 倍!完整的測評結果,可以參考:
https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/
推薦一個開源免費的 Spring Boot 實戰項目:
優勢
它與其他解決方案的區別在於:
-
它非常快,因此比其他替代方案更具成本效益。例如,Manticore:
-
- 對於小型數據,比MySQL快182倍(可重現)
- 對於日誌分析,比Elasticsearch快29倍(可重現)
- 對於小型數據集,比Elasticsearch快15倍(可重現)
- 對於中等大小的數據,比Elasticsearch快5倍(可重現)
- 對於大型數據,比Elasticsearch快4倍(可重現)
- 在單個伺服器上進行數據導入時,最大吞吐量比Elasticsearch快最多2倍(可重現)
-
由於其現代的多線程架構和高效的查詢並行化能力,Manticore能夠充分利用所有CPU核心,以實現最快的響應時間。
-
強大而快速的全文搜索功能能夠無縫地處理小型和大型數據集。
-
針對小、中、大型數據集提供逐行存儲。
-
對於更大的數據集,Manticore通過Manticore Columnar Library提供列存儲支持,可以處理無法適合記憶體的數據集。
-
自動創建高效的二級索引,節省時間和精力。
-
成本優化的查詢優化器可優化搜索查詢以實現最佳性能。
-
Manticore是基於SQL的,使用SQL作為其本機語法,並與MySQL協議相容,使您可以使用首選的MySQL客戶端。
-
通過PHP、Python、JavaScript、Java、Elixir和Go等客戶端,與Manticore Search的集成變得簡單。
-
Manticore還提供了一種編程HTTP JSON協議,用於更多樣化的數據和模式管理。
-
Manticore Search使用C++構建,啟動快速,記憶體使用最少,低級別優化有助於其卓越性能。
-
實時插入,新添加的文檔立即可訪問。
-
提供互動課程,使學習輕鬆愉快。
-
Manticore還擁有內置的複製和負載均衡功能,增加了可靠性。
-
可以輕鬆地從MySQL、PostgreSQL、ODBC、xml和csv等來源同步數據。
-
雖然不完全符合ACID,但Manticore仍支持事務和binlog以確保全全寫入。
-
內置工具和SQL命令可輕鬆備份和恢複數據。
Craigslist、Socialgist、PubChem、Rozetka和許多其他公司使用 Manticore 進行高效搜索和流過濾。
使用
Docker 鏡像可在Docker Hub上獲取:
要在 Docker 中試驗 Manticore Search,只需運行:
docker run -e EXTRA=1 --name manticore --rm -d manticoresearch/manticore && until docker logs manticore 2>&1 | grep -q "accepting connections"; do sleep 1; done && docker exec -it manticore mysql && docker stop manticore
之後,可以進行其他操作,例如創建表、添加數據並運行搜索:
create table movies(title text, year int) morphology='stem_en' html_strip='1' stopwords='en';
insert into movies(title, year) values ('The Seven Samurai', 1954), ('Bonnie and Clyde', 1954), ('Reservoir Dogs', 1992), ('Airplane!', 1980), ('Raging Bull', 1980), ('Groundhog Day', 1993), ('<a href="http://google.com/">Jurassic Park</a>', 1993), ('Ferris Bueller\'s Day Off', 1986);
select highlight(), year from movies where match('the dog');
select highlight(), year from movies where match('days') facet year;
select * from movies where match('google');
完整文檔和開源代碼,可以移步:
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!
覺得不錯,別忘了隨手點贊+轉發哦!