8 个自托管的强大搜索 🔍 适合您产品的引擎软件

为你的应用添加强大的搜索功能

起初这可能看起来有些吓人,但为你的应用程序增加一个高效的搜索功能,实际上既不复杂也不耗费时间。这里有一些值得参考的建议!

尽管近几年科技领域涌现出许多令人印象深刻的技术,搜索功能无疑已成为我们日常生活中不可或缺的一部分。它无处不在,例如在电商网站、博客、知识库等等。搜索框和图标的存在不仅仅是为了外观上的炫酷,更是为了满足用户的迫切需求。

如果你的企业正在寻找一个优秀的搜索解决方案,或者对现有的方案感到不满,你应该如何选择呢?

幸运的是,你无需支付高昂的授权费用,也不需要维护一个由二十名开发人员和系统管理员组成的庞大团队。今天,我将推荐几款可以立即安装和集成的搜索引擎,特别适合那些只有一到两名开发人员的小型企业。

Meilisearch

Meilisearch是你会发现的最好且最有价值的搜索引擎之一。

那么,是什么让我将Meilisearch列为我的首选推荐呢?

让我们开始了解一下吧。

开源

支持Meilisearch的所有源代码都在GitHub上公开。这意味着开发人员可以自行检查代码的任何部分。这反过来又使企业能够确保代码质量和意图(例如,程序中没有隐藏的后门或恶意扫描器)。当然,经验丰富的开发人员也可以帮助进一步改进技术。

卓越的用户体验

Meilisearch没有复杂的规则,例如 “a – b” 表示搜索 a 而不是 b。只需自然地输入你的搜索,结果就会流畅地呈现。该引擎具有很高的容错性和适应性,即使在输入错误或使用同义词时也能提供准确的结果。此外,它还支持多种语言。

优秀的开发者体验

开发人员会喜欢Meilisearch! 它不仅可以定制和扩展,还提供REST API接口!其文档也非常出色和全面。虽然在任何语言中进行HTTP调用都很简单,但对于那些希望快速上手的人,还提供了来自五种语言(JavaScript、Ruby、Python、Golang和PHP)的示例。

一个简单易用的搜索解决方案应该易于使用和设置。因此,Meilisearch在这方面表现出色!如果你想开始使用,只需在DigitalOcean上一键部署即可。

Solr

Solr是Apache项目的一部分,已经存在多年。它基于广为人知且高度可靠的Lucene库,该库也为流行的Elasticsearch搜索解决方案提供支持。所有这一切都意味着Solr是最强大、可扩展、符合标准、功能丰富且值得信赖的搜索解决方案之一。

像迪士尼、eBay、Netflix、Zappos和BestBuy这样的巨头都在使用它。但这并不意味着你不能运行一个更小、更简单的安装(例如,单机、不扩展、不故障转移——嗯,有时候这很好),并利用这个名为Solr的强大工具。

那么,为什么要选择Solr呢?

这里有一些充分的理由。

精准而强大

Solr是世界上最精准、功能最强大和最强大的搜索系统之一。另外,它是开源的,这就解释了为什么大公司(如前所述)会直接选择它。它处理文档和响应搜索查询的能力是首屈一指的。

简单的安装和维护

安装Solr就像解压缩并运行程序一样简单。对于简单的单机系统,不需要复杂的维护;密切关注内存的使用,因为一般的搜索解决方案,尤其是基于Java的技术,可能会非常消耗内存(因为它们会保留或尝试将所有内容保留在内存中以提供快速的读/写)。

管理面板

Solr自带一个管理面板,允许进行可视化监控和配置。经过简单的培训,即使是非开发人员也可以学会阅读关键图表。这个列表中的其他搜索引擎很少有这样的功能。

图片来源:官网

API驱动,符合标准

Solr在API中提供了一个结果接口,可以处理多种格式——JSON、CSV、XML和二进制。它按照JMX标准输出监控数据,这对Java开发人员来说是一个巨大的优势。

关于Solr还有很多可以说的,但是试图涵盖所有内容会让我们耗尽时间。😂 可以说Solr是一流的解决方案,无论你使用什么类型的数据,你都不会出错。

Elasticsearch

Elasticsearch曾经是,并且可以说是自由格式文本搜索的先驱。事实上,即使在今天,如果你向程序员或系统管理员询问关于搜索引擎的建议,Elasticsearch很可能是他们首先会想到的名字。当然,最近也有不少人会推荐Algolia这样的服务,但我们已经了解了它是如何诞生的。🤪

不要被上图中“开始免费试用”的按钮误导。虽然核心Elasticsearch技术本身是开源和免费的,但该公司正试图将其努力商业化并瞄准企业。因此,你在这里看到的实际上是他们云服务的试用版,这使得Elasticsearch的管理变得容易,尤其是在涉及集群的情况下。

嗯,这当中有点复杂。让我们回顾一下:Elasticsearch是开源和免费的,任何人都可以轻松设置并不受限制地使用它。

现在,正如预期的那样,让我们深入了解选择Elasticsearch的原因:

  • 成熟、久经考验的搜索引擎。这意味着如果你遇到“奇怪”的错误,你更有可能找到解决方案。
  • 一流的专注于集群、可扩展性和异步写入。
  • 可通过简单的REST API访问(这是其他人最终复制的内容)。
  • 面向文档,但也支持模式。
  • 非常快速和准确的结果。搜索速度可配置。
  • 出色的文档,无论是数量还是实用性。
  • 一个完整的搜索和分析云平台(ELK Stack),如果你愿意为便利付费。

我对Elasticsearch的唯一挑剔是大量的内存消耗。我的意思是,作为顾问,说服客户购买每月20美元的服务器已经够难的了,而Elasticsearch的内存需求远远超出了这个范围。

如果你有兴趣学习Elasticsearch,请查看这个Udemy课程。

Typesense

Typesense是一个轻量级、直接但功能强大的搜索引擎。那些寻求实用性和简单性的人一定要试试这个。

Typesense最棒的一点是,你可以在他们的网站上直接试用。在你配置好所有内容并尝试API的情况下,这可以避免许多挫败感并节省时间。 . . 只是为了发现某些功能没有按照你期望的方式运行。

这并不是说引擎中可能存在错误。只是引擎对某些东西的处理方式可能不是你的偏好,或者可能与你的业务场景不兼容。例如错别字、特殊符号、同义词等等。你可以直接在主页上查看引擎返回的结果(他们为此使用了书籍数据库)。

如你所见,此部分位于页面的最顶部。在搜索框中,我输入了查询“tra”,在下面我看到了来自书籍数据库的匹配结果(以及元数据——总结果、当前页面等)。

在选择搜索引擎时,Typesense有许多优势:

  • 它背后的技术是完全开源且流行的。
  • 如果你需要,可以轻松配置HA(高可用性)设置。
  • 容忍搜索查询中的拼写错误和其他干扰。
  • 高级过滤系统,适用于需要对搜索结果进行细粒度控制的用户。
  • 简单的REST API,尽管他们的文档可能会让你费一番周折才能找到它!
  • 客户端(SDK)可用于一些主要语言(JavaScript、Python、Ruby和PHP)。

最后,如果你觉得搭建新服务器的想法很累,Typesense还提供云产品,只需单击一下即可配置。按小时计费,读取和写入不计费。坦率地说,我认为这对大多数企业来说是更好的选择,前提是他们提前制定了定价并确保这会带来净收益。

总而言之,如果你需要一些小巧、流畅、精确和真正可靠的工具,Typesense是一个非常好的选择。

Sonic

Sonic以成为一个在“几MB内存”上运行的Elasticsearch替代品而自豪。

这怎么可能呢?

众所周知,Java虚拟机(JVM)需要大量内存(通常,启动JVM就会消耗大约1GB的内存);因此,使用Rust语言(为开发人员提供完全控制和内存安全)编写的代码可以同样快速地运行,并且只使用几MB的内存,这不足为奇。

放松,各位!那只是项目的吉祥物。

在撰写本文时,他们的用户列表中列出了一些公司,尽管我确信还有一些公司没有费心添加他们的名字。我不记得是如何或确切的时间框架,但我之前遇到过Sonic;那时,虽然我很高兴看到内存不足的替代方案,但我认为需要时间来稳定并消除隐藏的错误。好吧,看起来他们或多或少已经做到了;Sonic的受欢迎程度只能通过时间来证明。

好了,抛开这些思考,为什么你要考虑为你的组织/项目使用Sonic呢?

以下是一些原因:

  • 就搜索引擎而言,内存占用极低。
  • 库可用于所有主要的编程语言。Node、PHP和Rust是作者自己发布的,而其他的则是由社区创建的(令人高兴的是,像Elixir和Nim这样的较为冷门的语言也被包括在内!)。
  • 支持多种语言(数量众多,但我认为在撰写本文时,支持40-50种语言)。
  • 惊喜!你甚至可以使用新的语言,引擎仍然可以工作(😂😂),尽管你可能会失去一些高级功能,例如停用词。
  • 非常快速的引擎。如果你查看他们的GitHub页面,你会发现某些情况下,摄取和搜索的时间都以微秒为单位!当然,这是一个单机测试,因为网络延迟永远不会让数字这么低。

如果你想查看此引擎的运行情况,请访问此链接(他们的一家用户公司),并使用你看到的搜索框:

Sonic作为搜索引擎存在一定的局限性。开发人员在他们的GitHub页面上公开地强调并讨论了这些局限性。我的建议是仔细检查此列表,并确定你的用例是否与它们的局限性不冲突。也就是说,所有东西都有局限性。只是它们通常是隐藏起来的,所以我们直到为时已晚才意识到。因此,我认为Sonic是一个出色的搜索引擎选择。

TNTSearch

我们现在在这个列表中添加了一个有趣的条目。第一个有趣的事情是,这个功能完备、可用于生产的搜索引擎是用PHP编写的!

是的,在所有可能的语言中,选择的是PHP。我这么说不是因为我讨厌PHP,而是因为它通常是一个执行周期很短的语言。

第二个有趣的事情是他们的许可证,至少在撰写本文时是这样。实际上,许可证本身是MIT,所以没有问题,但作者将此软件归类为PS4Ware;如果你在生产中使用TNTSearch,你应该给他们发送PS4游戏! 😂 现在,这不是强制性的,正如“应该”所表明的那样,但这非常有趣。我也希望他们将其升级到PS5许可证,尽管现在可能为时过早。

无论如何,我本人来自强大的PHP + Laravel背景,我非常感谢这些人的努力。他们的网站没有说太多,但似乎表明他们是顾问,所以如果你有项目,我强烈建议你联系他们!

那么,有什么充分的理由在你的项目中使用TNTSearch吗?

是的,有:

  • 用PHP编写,为PHP服务,由PHP编写。PHP生态系统需要更多像这样专用、高质量的解决方案。
  • 模糊搜索、地理搜索和文本分类等重要功能。
  • 易于更改搜索索引,这是许多解决方案所缺少的主要灵活性。
  • 词干提取、BM25排名和自定义分词确保了高精度。
  • 易于部署——就像任何其他的Composer包一样!

你可以在这里查看引擎的性能,亲眼看看它的速度和精度。我想再次强调PHP方面:如果你正在维护一个PHP项目,你希望尽可能地留在PHP生态系统内(为什么?想想再培训成本)。而对于这种情况,TNTSearch提供了一个难以拒绝的价值主张!

Vespa

Vespa是一个广泛且重量级的产品。就像这个列表中的其他几个条目一样,它太大了,无法用几句话来概括。但我必须尝试,所以我会的。🙂Vespa是一个搜索引擎,当然,但将其用作普通的搜索引擎将浪费其潜力。

Vespa旨在处理海量数据(大数据),并在此基础上提供机器学习驱动的功能和无限的定制。

Vespa将自己定位为Elasticsearch和传统数据库的竞争对手,并就使用什么以及何时使用提供了很好的比较。

如你所见,你越接近机器学习驱动的操作,Vespa就越有意义。作为中小型企业的纯搜索引擎,我认为它与其他选择相比没有任何优势。

现在,考虑到你不断生成大量数据,并希望通过AI/ML(这适合当今许多SaaS业务的描述)做出更好的决策,这就是为什么Vespa很有意义:

  • 开源:没有奇怪的许可证,也没有陷阱合同。除此之外,你没有什么需要支付的,尽管我总是强调公司应该定期向他们最常用的项目付费(即使每月50美元也会对他们有很大帮助)。
  • 实时性:Vespa是真正的实时性。它不仅可以消化、处理和搜索传入的数据;甚至它的配置也可以即时修改。
  • 可扩展性和容错性:Vespa的扩展非常简单。它对节点的突然消失也有很好的响应,提供了很高的可靠性。
  • 排名和推荐:搜索、排名和Vespa推荐可以与结构化查询融合,以提供真正准确的结果。
  • 无痛AI/ML:Vespa捆绑了高质量、预先训练好的ML模型。你无需雇佣20名数据科学家来清理和使用你的数据。
  • 自定义插件:有一套完整的API可以帮助开发人员创建自定义的Java插件,如果他们需要更改引擎的工作方式。

毫无疑问,Vespa规模庞大,因此对于那些规模稍大的团队来说,这可能是一个显而易见的选择——无论是团队规模、技术能力、基础设施预算、每日数据量还是其他方面。在这些方面,Vespa将是最好的选择,我强烈推荐。

Ambar

对于某些企业来说,搜索的数据尚未被整齐地转换并存储为JSON文档;相反,它实际上是一团糟——各种文档(如Word、PDF、HTML文件等)的混乱集合。如果你属于这种情况,并且认为自己没有希望了,那么,请认识一下Ambar!

Ambar最棒的地方在于它可以处理的大型文件类型:

  • MS Office文件格式(.docx、.xlsx等),包括PowerPoint、Visio和Publisher!
  • OpenOffice文件格式
  • 应用自动OCR以提取信息的PDF文档。
  • 图片
  • 电子邮件存档格式,例如PST(你好,Outlook用户!)。
  • 带附件的电子邮件

好的功能还不仅如此。Ambar能够处理大文件(超过30MB)、ZIP存档和多线程,以充分利用CPU并加快结果的生成。因此,如果你在某个被遗忘的服务器上的某个磁盘中存放了多年的文档,那么现在是时候让它们重见天日,并将所有内容提供给Ambar了!

结论

搜索🔎功能强大,搜索神奇,搜索无处不在!

它甚至可能具有一些神秘之处,但是今天,没有任何理由说明为什么每个人(当然,在一些开发人员的帮助下)都无法获得它的好处。从企业到个人再到政府,此列表中的搜索引擎提供了几乎零成本的解决方案,但具有指数级的收益和影响。

立即获取云服务器,并安装你喜欢体验的上述搜索软件。