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

简介: 号称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


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
机器学习/深度学习 搜索推荐 关系型数据库
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
1113 0
|
存储 JSON 网络协议
ElasticsearchRestTemplate客户端使用
ElasticsearchRestTemplate客户端使用
|
Linux Python 监控
Supervisor 、Supervisord-Monitor 的web统一管理安装、配置、使用
Supervisor 安装、配置、使用、web管理,linux下进程管理系统、监听、重启、停止进程。
10503 1
|
Rust 数据可视化 网络安全
一款高颜值、现代化的 Git 可视化管理工具
GitButler 是由 GitHub 联合创始人 Scott Chacon 开源的 Git 客户端,采用 Tauri/Rust/Svelte 构建。它支持虚拟分支、轻松提交管理、GitHub 集成、SSH 密钥管理和 AI 工具等功能,目前仅支持 macOS 和 Linux 平台。用户可以通过拖拽方式快速聚合多个分支的改动,实现灵活的跨分支操作。
|
人工智能 安全 Java
Spring Boot yml 配置敏感信息加密
本文介绍了如何在 Spring Boot 项目中使用 Jasypt 实现配置文件加密,包含添加依赖、配置密钥、生成加密值、在配置中使用加密值及验证步骤,并提供了注意事项,确保敏感信息的安全管理。
1684 1
|
运维 监控 数据可视化
斩获6.1 star,再见Crontab!这款开源定时任务管理系统让运维更高效
Gocron是一款基于Go语言的轻量级定时任务调度系统,替代传统Linux Crontab。它提供可视化Web界面管理,支持秒级调度、任务依赖配置与多节点执行。核心功能包括:1) 可视化管理;2) 精确调度规则;3) 全链路任务控制;4) 多类型任务支持;5) 完善监控通知。适用于自动化运维、系统监控、数据处理及业务自动化等场景。通过三步快速上手:一键部署、添加任务节点、创建定时任务。相比Crontab和Celery,Gocron更直观高效,适合个人与企业使用。项目地址:https://github.com/ouqiang/gocron。
2242 8
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
36562 1
|
缓存 NoSQL Java
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
1105 0
阿里云大模型调用思考模型时输出思考后无法输出回复
在使用部分OpenAI模型(如deepseek-r1)时,官方代码只能输出思考过程而无法输出最终回复。问题源于代码中未正确判断思考数据为空字符串的情况。修正方法是增加对`delta.reasoning_content`和`delta.content`非空的判断条件。此外,`deepseek-v3`模型的输出格式不规范,包含无意义的信息且标签未闭合,建议避免使用该模型。
1622 2