号称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倍性能搜索引擎到底有多强悍
264 0
|
存储 缓存 达摩院
企查查基于阿里云Elasticsearch 在复杂检索场景中的性能优化
本文分享企查查基于阿里云Elasticsearch 在复杂检索场景中的性能优化。
1281 0
|
2天前
|
存储 缓存 监控
极致 ElasticSearch 调优,让你的ES 狂飙100倍!
尼恩分享了一篇关于提升Elasticsearch集群的整体性能和稳定性措施的文章。他从硬件、系统、JVM、集群、索引和查询等多个层面对ES的性能优化进行分析,帮助读者提升技术水平。
|
存储 缓存 搜索推荐
百度搜索:蓝易云【Elasticsearch 底层技术原理以及性能优化实践】
和副本、优化硬件、设计合理的索引、编写高效的查询以及利用缓存和预热等策略。通过综合考虑这些方面,可以提升Elasticsearch的性能并获得更好的搜索和分析体验。
323 0
|
7月前
|
监控 测试技术 数据库
百度搜索:蓝易云【GaussDB整体性能慢分析教程。】
通过以上步骤,你可以分析和优化GaussDB的整体性能慢问题。请注意,具体的优化步骤和方法可能因系统配置、工作负载和具体问题而有所不同。建议参考GaussDB的官方文档和相关性能优化指南,以获得更详细和针对性的优化建议。
110 0
|
存储 关系型数据库 MySQL
MySQL索引探秘:加速数据检索的必备利器
MySQL索引探秘:加速数据检索的必备利器
274 0
|
数据采集 算法 搜索推荐
2023年如何在谷歌上排名更高?
答案是:提升谷歌排名的方法是:做持续建设谷歌GPB外链+优质内容。 理解谷歌的算法更新 谷歌的搜索引擎算法经常进行更新。为了在2023年达到更好的排名,首先要深入了解这些最新的更新,以便根据这些更新进行调整。 跟踪官方通告 谷歌经常通过官方博客发布有关算法更新的通告。定期查看这些通告可以帮助你跟上最新的变化。 使用SEO工具 有多种SEO工具,例如Moz、SEMrush和Ahrefs,可以帮助你跟踪算法的变化和你网站的排名。
106 0
2023年如何在谷歌上排名更高?
|
索引
白话Elasticsearch20-深度探秘搜索技术之使用rescoring机制优化近似匹配搜索的性能
白话Elasticsearch20-深度探秘搜索技术之使用rescoring机制优化近似匹配搜索的性能
85 0
|
分布式计算 算法 Java
白话Elasticsearch16-深度探秘搜索技术之使用原生cross-fiedls技术解决搜索弊端
白话Elasticsearch16-深度探秘搜索技术之使用原生cross-fiedls技术解决搜索弊端
104 0
|
分布式计算 自然语言处理 Java
白话Elasticsearch06- 深度探秘搜索技术之手动控制全文检索结果的精准度
白话Elasticsearch06- 深度探秘搜索技术之手动控制全文检索结果的精准度
98 0