号称elastic seaech 100多倍性能的Manticore search搜索引擎有多强

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 号称elastic seaech 100多倍性能的Manticore search搜索引擎有多强

Manticore Search介绍


是一个高性能、轻量级的开源搜索引擎,专为全文搜索功能设计。



1. **发展历程**:Manticore Search起源于2017年,它是Sphinx Search的继承者,开发团队借鉴了Sphinx的所有优秀特性,并在其基础上进行了显着的功能改进和错误修复。

2. **技术特点**:Manticore Search使用C++开发,几乎完全重写了Sphinx代码,它不仅继承了Sphinx的优点,还增加了更多的创新功能,包括对大规模数据集的处理能力和快速准确的搜索结果返回。

3. **全文搜索能力**:Manticore Search具有卓越的全文搜索功能,这使得它在现代化数据库解决方案中占有一席之地。它的全文搜索能力在开源社区广受认可,并且因其快速和轻量级的特性而受到开发者和企业的青睐。

4. **开源状态**:作为一个开源项目,Manticore Search在GitHub上维护,拥有活跃的社区参与度,并获得了相当数量的星标(5.7k),显示出其在开源界的影响力和认可度。

5. **易于安装和使用**:Manticore Search支持多种操作系统,包括Ubuntu、CentOS、Debian、Windows和MacOS,同时提供Docker容器使用方式,使得安装和配置过程更加简单方便。

6. **替代选择**:开发者明确表示,Manticore Search旨在作为Elasticsearch的一个替代方案,有望在未来取代ELK技术栈中的E部分,这引起了业界的广泛关注和讨论。


Manticore Search以其高性能、轻量级特性以及优秀的全文搜索能力,成为了许多开发者和企业的首选搜索引擎。随着技术的不断进步和社区贡献的增加,Manticore Search有望在搜索引擎领域扮演更加重要的角色。



Manticore Search 相比于 Elasticsearch,在性能上具有明显的优势。


- **性能方面**:Manticore Search 在不同的数据集大小上均展现出了比 Elasticsearch 更快的搜索速度。对于小型数据,Manticore Search 比 MySQL 快182倍,比 Elasticsearch 快15倍;对于日志分析,比 Elasticsearch 快29倍;对于中等大小的数据,比 Elasticsearch 快5倍;对于大型数据,比 Elasticsearch 快4倍。此外,在单个服务器上进行数据导入时,Manticore Search 的最大吞吐量比 Elasticsearch 快最多2倍。

- **架构优势**:Manticore Search 的现代多线程架构和高效的查询并行化能力使其能够充分利用所有CPU核心,以实现最快的响应时间。这一点在处理大量数据时尤为重要,因为它可以显著提高处理速度和效率。


使用 Manticore Search 和 Spring Boot 的代码示例:


1. **添加依赖**


在 Maven 项目的 pom.xml 文件中添加 Manticore Search 的依赖:


```xml
<dependency>
    <groupId>com.manticoresearch</groupId>
    <artifactId>manticore-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
```


2. **配置数据源**


在 application.properties 文件中配置 Manticore Search 的数据源信息:


```properties
# Manticore Search 数据源配置
manticore.host=localhost
manticore.port=9306
manticore.indexName=my_index
```


3. **创建索引**


定义实体类和索引映射,以便 Manticore Search 知道如何为数据建立索引。例如,创建一个名为 Book 的实体类:


```java
@Document(indexName = "book")
public class Book {
    @Id
    private String id;
    private String title;
    private String author;
    // getter and setter methods
}
```


4. **编写接口**


创建用于与 Manticore Search 交互的服务类和方法,例如索引文档、执行搜索查询等。例如,创建一个名为 BookService 的服务类:

```java
@Service
public class BookService {
    @Autowired
    private MantiCoreSearchTemplate mantiCoreSearchTemplate;
    public void indexBook(Book book) {
        mantiCoreSearchTemplate.index(book);
    }
    public List<Book> searchBooks(String query) {
        return mantiCoreSearchTemplate.search(query, Book.class);
    }
}
```


5. **中文分词**


如果需要对中文内容进行搜索,可以集成中文分词器,如 mmseg 或其他兼容的分词工具,以便 Manticore Search 能够正确处理中文文本。例如,可以使用 IK Analyzer 作为中文分词器:


```xml
<!-- 添加 IK Analyzer 依赖 -->
<dependency>
    <groupId>org.wltea.analyzer</groupId>
    <artifactId>ik-analyzer</artifactId>
    <version>2012_u6</version>
</dependency>
```


在 application.properties 文件中配置 IK Analyzer:


```properties

# IK Analyzer 配置

ik.analyzer.dictionary=/path/to/your/dictionary.txt

ik.analyzer.maxOffset=10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&useUnicode=true&encoding=utf8&separator=%5E&lowercase=true&toLowerCase=false&wt=json&indent=true&rows=1&start=1&match_gram=false&searchMode=normal&queryExpansion=false&advancedSyntax=true&ignorePunctuation=true&duplicateSeparator=%5B%5D&tokenizer=ik_smart&qtp=1&timeZone=Asia/Shanghai&timeout=3666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666&autoReconnect=true&failOnUnknownQueryType=false&allowLeadingWildcard=false&highlight=false&formatter=fvheader&logTimeZone=Asia/Shanghai&explainOther=&flags=&cursorMark=*&_sourceExclude=&_sourceInclude=&_sourceOrder=&stats=&shards=true&suggestField=&suggestMode=missing&suggestSize=1&suggestText=&suggestPath=&suggestContextField=&suggestContextSize=1&suggestFuzzyMaxEdits=2&suggestFuzzyPrefixLength=1&suggestHighlight=false&suggestScore=none&suggestSort=score&suggestTimeZone=Asia/Shanghai&suggestTimeout=1&suggestNestedProperties=&suggestIgnoreIndices=&suggestIgnoreFields=&suggestIgnoreValues=&suggestIgnorePatterns=&suggestIgnoreConjunction=false&suggestIgnoreDisjunction=false&suggestIgnorePhrases=false&suggestIgnoreProximity=false&suggestIgnoreBoolean=false&suggestIgnorePhraseDelimiter=false&suggestIgnorePrecedence=false&suggestIgnoreFunctions=false&suggestIgnoreAnalyzers=false&suggestIgnoreLocale=false&suggestIgnoreCase=false&suggestIgnoreAccent=false&suggestIgnoreNonStemmedWords=false&suggestIgnoreStopWords=false&suggestIgnoreMinWordLength=1&suggestIgnoreMaxWordLength=-1&suggestIgnoreMinDocFreq=1&suggestIgnoreMaxDocFreq=-1&suggestIgnoreMinTermFreq=1&suggestIgnoreMaxTermFreq=-1&suggestIgnoreMinWordLenRatio=1&suggestIgnoreMaxWordLenRatio=-1&suggestIgnoreMinMatchTermFreq=1&suggestIgnoreMaxMatchTermFreq=-1&suggestIgnoreMinMatchDocFreq=1&suggestIgnoreMaxMatchDocFreq=-1&suggestIgnoreMinTermPosition=1&suggestIgnoreMaxTermPosition=-1&suggestIgnoreMinTermDistance=1&suggestIgnoreMaxTermDistance=-1&suggestIgnoreMinMatchTermPosition=1&suggestIgnoreMaxMatchTermPosition=-1&suggestIgnoreMinMatchTermDistance=1&suggestIgnoreMaxMatchTermDistance=-1&suggestIgnoreMinMatchDocPosition=1&suggestIgnoreMaxMatchDocPosition=-1&suggestIgnoreMinMatchDocDistance=1&suggestIgnoreMaxMatchDocDistance=-1&suggestIgnoreMinMatchDocLenRatio=1&suggestIgnoreMaxMatchDocLenRatio=-1&suggestIgnoreMinMatchTermLenRatio=1&suggestIgnoreMaxMatchTermLenRatio=-1&suggestIgnoreMinMatchDocLenRatioPosition=1&suggestIgnoreMaxMatchDocLenRatioPosition=-1&suggestIgnoreMinMatchDocLenRatioDistance=1&suggestIgnoreMaxMatchDocLenRatioDistance=-1&suggestIgnoreMinMatchTermLenRatioPosition=1&suggestIgnoreMaxMatchTermLenRatioPosition=-1&suggestIgnoreMinMatchTermLenRatioDistance=1&suggestIgnoreMaxMatchTermLenRatioDistance=-1&suggestIgnoreMinMatchDocLenRatioPositionDistance=1&suggestIgnoreMaxMatchDocLenRatioPositionDistance=1&suggestIgnoreMinMatchDocLenRatioPositionDistanceRatio=1&suggestIgnoreMaxMatchDocLenRatioPositionDistanceRatio=1&suggestI


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7月前
|
机器学习/深度学习 搜索推荐 关系型数据库
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
254 0
|
存储 缓存 搜索推荐
百度搜索:蓝易云【Elasticsearch 底层技术原理以及性能优化实践】
和副本、优化硬件、设计合理的索引、编写高效的查询以及利用缓存和预热等策略。通过综合考虑这些方面,可以提升Elasticsearch的性能并获得更好的搜索和分析体验。
322 0
|
7月前
|
监控 测试技术 数据库
百度搜索:蓝易云【GaussDB整体性能慢分析教程。】
通过以上步骤,你可以分析和优化GaussDB的整体性能慢问题。请注意,具体的优化步骤和方法可能因系统配置、工作负载和具体问题而有所不同。建议参考GaussDB的官方文档和相关性能优化指南,以获得更详细和针对性的优化建议。
108 0
|
索引
白话Elasticsearch20-深度探秘搜索技术之使用rescoring机制优化近似匹配搜索的性能
白话Elasticsearch20-深度探秘搜索技术之使用rescoring机制优化近似匹配搜索的性能
84 0
|
算法 SEO
谷歌优化排名怎么做?Google SEO怎么优化?
不过,优质的英文外链建设是一个长期工作,要持续做,并非一次性做完就算的了。
143 0
谷歌优化排名怎么做?Google SEO怎么优化?
|
机器学习/深度学习 人工智能 算法
搜索CIFAR10只需1个半小时:华为诺亚&上交大ICLR 2020提出更快、更稳定、性能更好的可微分架构搜索
人工智能顶会 ICLR 2020 将于明年 4 月 26 日于埃塞俄比亚首都亚的斯亚贝巴举行,不久之前,大会官方公布论文接收结果:在最终提交的 2594 篇论文中,有 687 篇被接收,接收率为 26.5%。华为诺亚方舟及其合作实验室有多篇论文被 ICLR 2020 接收,本文介绍了其中一篇 Spotlight 文章。
441 0
搜索CIFAR10只需1个半小时:华为诺亚&上交大ICLR 2020提出更快、更稳定、性能更好的可微分架构搜索
|
边缘计算 搜索推荐 大数据
【云周刊】 第210期:阿里巴巴复杂搜索系统的可靠性优化之路
本期头条 欢迎关注云周刊 阿里巴巴复杂搜索系统的可靠性优化之路 搜索引擎是电商平台成交链路的核心环节,搜索引擎的高可用直接影响成交效率。闲鱼搜索引擎作为闲鱼关键系统,复杂度和系统体量都非常高,再加上闲鱼所有导购场景都依靠搜索赋能,搜索服务的稳定可靠成为了闲鱼大部分业务场景可用能力的衡量标准;如何保障搜索服务的稳定和高可用成为了极大的挑战。
4124 0