Manticore Search是一个易于使用,开源和快速的数据库,专为搜索而设计。它是Elasticsearch的一个很好的替代品。
它与其他解决方案的区别在于:
- 它的速度非常快,因此比替代品更具成本效益,例如Manticore:
- 凭借其现代化的多线程架构和高效的查询并行化功能,Manticore能够充分利用所有CPU内核,以实现最快的响应时间。
- 强大而快速的全文搜索可与小型和大型数据集无缝配合。
- 按行存储,适用于小型、中型和大型数据集。
- 对于更大的数据集,Manticore通过Manticore Columnar Library提供列存储支持,能够处理太大而无法容纳在RAM中的数据集。
- 性能二级索引是使用PGM索引(分段几何模型索引)自动创建的,该索引提供索引键与其内存位置之间的高效映射。
- 基于成本的查询优化器使用有关索引数据的统计数据来评估和确定最有效的执行计划。
- Manticore是SQL优先的,使用SQL作为其原生语法,并提供与MySQL协议的兼容性,允许您使用首选的MySQL客户端。
- 客户端可在PHP,Python,蟒蛇 JavaScript,TypeScript,Java,丹,去得双曲正弦值.锈,与Manticore Search的集成变得简单。
- Manticore还提供编程式HTTP JSON协议,以实现更通用的数据和模式管理,并支持Elasticsearch兼容的写入。
- Manticore Search内置于C++中,启动速度快,使用最少的RAM(空实例约40MB RSS),低级别优化有助于其令人印象深刻的性能。
- 通过实时插入,可以立即访问新添加或更新的文档。
- 通过互动课程提供互动课程,使学习变得轻而易举。
- Manticore还拥有使用加莱拉库和负载平衡功能的内置虚拟同步多主机复制。
- 数据可以轻松地从MySQL、PostgreSQL、ODBC、xml和csv等源同步。
- 虽然不完全符合ACID,但Manticore支持隔离事务和二进制日志记录以进行安全写入。
- 使用内置工具(如manticore-backup和SQL SQLBackup UP命令)轻松进行数据备份和恢复
Craigslist、Socialgist、PubChem、Rozetka和许多其他网站都使用Manticore进行高效搜索和流过滤。
极客辣评
Meilisearch 就像个“细节控强迫症”+“自由派艺术家”的混合体。它允许你从最底层开始,像捏橡皮泥一样捏它的“分词规则”——就是电脑怎么把一句话拆成一个个关键词。
它能让你干这些“离谱但很爽”的事:
1. 你说了算,谁是“词”,谁是“空格”
比如你可以说:“从现在起,@ 和 都算正常字,不能拆开!”
于是电脑就会把 “hello@world” 当成一个词,而不是拆成 “hello” 和 “world”。
——这就像你说:“我不管别人,我俩中间不能有第三者!”
2. 给某些字符发“双面间谍证”
比如那个小短横“-”,它平常是分隔符(比如 “well-known” 拆成 well 和 known),但有时候你又想让它当普通字符(比如 “abc-def” 不拆)。
Meilisearch 就说:“没问题!这货今天是间谍,看情况切换身份!”
——这不就是传说中的“我裂开了,但我还能用”?
3. 还能把烦人的符号拉黑
比如你讨厌星号 * 或者竖线 |,直接扔进
ignore_chars
黑名单。 从此它们在搜索引擎眼里就像空气一样——直接消失!
——“你没有存在感,退下吧!”
4. 还能用“正则神功”滤一遍
通过
regexp_filter
,你可以在数据进库和搜索时,用“魔法咒语”(正则表达式)提前处理文本。 比如:“所有带数字的词都给我标红!”或者“把所有括号内容直接删掉!”
——这简直是搜索引擎界的“美颜滤镜+PS一键去水印”!
但是!重点来了!
你以为设置完就万事大吉?想得美!
现实世界的数据,就像你班上那个写字龙飞凤舞的同学——
一会儿连笔,一会儿漏字,一会儿标点乱打,根本不管什么“规则”!
你想搜 “ab cd ef”,结果人家存的是 “abc def”(中间少个空格),
或者 “ab-cd-ef”,甚至 “ab_cd_ef”……
你气不气?电脑更气!它一脸懵:“这算一个词?还是三个?还是六个??”
所以啊,再牛的搜索引擎,碰到这种“不讲武德”的数据,也都得挠头抓耳,原地升天。
这种情况,估计在你家系统里,天天上演,比食堂抢饭还常见吧?
总结一下:
Meilisearch 给了你“上帝模式”的权限,
但能不能玩好,就看你有没有耐心当个“文字侦探”+“符号警察”了。
不然,分词一乱,搜啥啥没有,
——那场面,就像你拿错钥匙开锁,转半天,门没开,钥匙还断了。
Search的查询语言比Lucene的更有表现力。虽然Lucene支持基本的布尔逻辑、字段搜索、短语查询、通配符和接近度,但Manticore添加了许多强大的运算符。其中包括quorum matching(/N)、strict word order()、NEAR/NOTNEAR proximity、MAYBE(soft OR)、exact form(=word)、position anchors(^word,word$)、full regular expressions等。Manticore使用SQL风格的语法和MATCH()子句进行全文搜索,从而更容易将联合收割机文本搜索与过滤器和排名结合起来。
对于
任何感兴趣的人来说,替代Elasticsearch的另外两个热门竞争者是Typesense(https://typesense.org/)和Meilisearch(https://www.meilisearch.com/)。
(两者都在试图取代Algolia,因为两者都有云产品)
Manticore具有现代多线程架构,具有高效的查询并行化,可充分利用所有CPU内核。它支持实时索引-文档在插入后立即可搜索,无需等待刷新或刷新。
它使用针对小型到大型数据集优化的行存储,对于不适合内存的更大数据集,通过Manticore Columnar Library支持列存储。
二级索引使用PGM索引(分段几何模型索引)自动构建,该索引通过将键映射到其内存位置来实现高效的过滤和排序。基于成本的查询优化器使用有关数据的统计信息为每个查询选择最有效的执行计划。
Manticore是SQL优先的:SQL是它的原生语法,它使用MySQL协议,所以它可以与MySQL客户端一起开箱即用。
它是用C++编写的,启动速度快,使用最少的RAM,并避免垃圾收集-这有助于保持低负载和稳定,即使在负载下。
至于基准测试,在https://db-benchmarks.com上有越来越多的基准测试,Manticore与Elasticsearch、MySQL、PostgreSQL、Meilisearch、Typesense等进行了比较。结果是开放的和可重复的。
要我猜的话,我会说它的功能集比Elasticsearch小20倍。
我们在Elasticsearch之上构建了一个自定义搜索引擎。我们的查询生成器定期构造优化的查询,这些查询在任何吹捧的替代或替换中都不可能实现,这些查询几乎总是专注于简单的全文搜索,因为这是开发人员使用ES的一切。有一个令人难以置信的巨大数量的额外功能,你需要认真的搜索引擎虽然,任何竞争者将不得不支持至少一个子集,这些值得该标题摆在首位。