这看起来令人生畏,但为您的应用程序添加强大的搜索功能既不复杂也不耗时。 这里有一些中肯的建议!
尽管在过去的 2-3 年中,许多技术给人留下了深刻的印象,但搜索是为数不多的已成为我们生活中不可或缺的一部分。 它无处不在——电子商务网站、博客、知识库等等——不是因为搜索框和图标看起来很酷,而是因为它做了一些迫切需要的事情。
如果您是一家正在寻找良好搜索解决方案的企业,或者厌倦了现有的解决方案,您会怎么做?
值得庆幸的是,您不需要支付荒谬的许可费用,也不需要维持一个由 20 名开发人员和系统管理员组成的团队。 今天我有一些可以立即安装和集成的搜索引擎建议,尤其是对于拥有 1-2 规模开发团队的小型企业。
目录
美利搜索
您会遇到的最好的和高价值的搜索引擎之一是 MeiliSearch。
那么,是什么让我将 MeiliSearch 列为我的首选推荐?
开始。
开源
支持 MeiliSearch 的所有源代码都可以在 GitHub 上公开。 这意味着开发人员可以自己检查代码的任何部分。 作为回报,企业可以确保质量和意图(例如,程序中没有后门或扫描仪)。 当然,知识渊博的开发人员可以帮助进一步改进技术。
很棒的用户体验
MeiliSearch 没有复杂的规则(例如“a – b”表示 a 而不是 b)。 只需自然地输入您的搜索,结果就会开始流畅地显示。 该引擎具有高度的容错性和适应性,即使在使用拼写错误或同义词时也能提供准确的结果。 它还支持多种语言。
伟大的 DevEx
开发者会喜欢 MeiliSearch! 它不仅是可定制和可扩展的,而且是作为 REST API 的接口! 文档也非常出色且完整。 虽然在任何语言中进行 HTTP 调用都是微不足道的,但为那些急于求成的人提供了来自五种语言(JavaScript、Ruby、Python、Golang 和 PHP)的示例。
简单的搜索解决方案应该易于使用和设置。 因此,MeiliSearch 会检查所有选项! 如果您愿意继续,请一键在 DigitalOcean 上开始。
索尔
Solr 是 Apache 项目的一部分,现在已经存在了几年。 它建立在众所周知且高度可靠的 Lucene 库之上,该库还为称为 ElasticSearch 的流行搜索解决方案提供支持。 所有这一切都意味着 Solr 是最强大、可扩展、符合标准、功能丰富且值得信赖的搜索解决方案之一。
它被迪士尼、eBay、Netflix、Zappos 和 BestBuy 等庞然大物使用。 但是,这并不意味着您不能运行更小、更简单的安装(例如,单机、无扩展、无故障转移——嗯,有时这很好)并利用这个名为 Solr 的强大工具。
那么,为什么要使用 Solr?
这里有一些很好的理由。
准确而强大
Solr 是世界上最准确、最有能力和最强大的搜索系统之一。 另外,它是开源的,这就解释了为什么大牌(如前所述)会直奔它。 它消化文档和回答搜索查询的能力是首屈一指的。
简单的安装和维护
安装 Solr 就像解压缩并运行程序一样简单。 对于简单的单机系统,不需要复杂的维护; 密切关注 RAM 的使用,因为一般的搜索解决方案和特别是基于 Java 的技术可能会非常消耗 RAM(因为它们保留或尝试将所有内容保留在 RAM 中以提供快速读/写)。
管理面板
Solr 带有一个管理面板,允许进行可视化监控和配置。 通过一些微不足道的培训,即使是非开发人员也可以学会阅读关键图表。 此列表中没有多少搜索解决方案具有这样的功能。
图片来源:官网
API 驱动,符合标准
Solr 在 API 中提供了一个结果接口,可以处理多种格式——JSON、CSV、XML 和二进制。 它按照 JMX 标准输出监控数据,这对 Java 开发人员来说是一个巨大的福音。
支持 Solr 的还有很多话要说,但试图涵盖所有内容将使我们走到尽头。 😂 可以说 Solr 是一流的解决方案,无论您使用什么类型的数据,您都不会出错。
弹性搜索
Elasticsearch 曾经是,并且可以说仍然是自由格式文本搜索的先驱。 事实上,即使在今天,如果您向程序员或系统管理员询问有关搜索引擎的建议,Elasticsearch 很可能是他们会想出的唯一名称。 当然,这些天来,相当大的一块也会推荐像 Algolia 这样的东西,但我们已经介绍了它是如何产生的。 🤪
不要被上图中的“开始免费试用”按钮误导。 虽然核心 Elasticsearch 技术本身是开源和免费的,但该公司正试图将其努力货币化并瞄准企业。 因此,您在这里看到的实际上是他们的云服务的试用版,使 Elasticsearch 的管理变得容易,尤其是在涉及集群的情况下。
呃,有这么多的网要解开。 让我们回顾一下:Elasticsearch 是开源和免费的,任何人都可以轻松设置并不受限制地使用它。
现在,正如预期的那样,让我们深入了解选择 Elasticsearch 的原因:
- 成熟、久经考验的搜索引擎。 这意味着如果您遇到“奇怪”的错误,您更有可能找到解决方案。
- 一流的专注于集群、可扩展性和异步写入。
- 可通过简单的 REST API 访问(这是其他人最终复制的内容)。
- 面向文档,但如果需要支持模式。
- 非常快速和准确的结果。 可配置的搜索速度。
- 恒星文档,无论是数量还是实用性。
- 一个完整的搜索和分析云平台(ELK 堆栈),如果您愿意为方便付费。
我对 Elasticsearch 的唯一挑剔是大量的 RAM 消耗。 我的意思是,作为顾问,说服客户购买每月 20 美元的服务器已经够难的了,遗憾的是,这与 Elasticsearch 的要求相去甚远。
如果您有兴趣学习 Elasticsearch,请查看此 Udemy 课程。
类型感
Typesense 是一个轻量级、直接但功能强大的搜索引擎。 那些寻求实用性和简单性的人一定要试试这个。
Typesense 最好的事情之一是你可以在他们的网站上直接试用。 在您设置所有内容并尝试 API 的情况下,这可以节省挫败感和时间。 . . 只是发现其中一项或多项功能无法按照您希望的方式工作。
这并不是说引擎中可能存在错误。 只是引擎对某些东西的处理可能不是您的偏好,或者它可能与您的业务领域完全冲突。 错别字、特殊符号、同义词等。 . . 您可以在主页上检查引擎抛出的结果(他们为此使用了书籍数据库)。
如您所见,此部分位于最上面的部分的正下方。 在搜索框中,我输入了查询“tra”,在下面我看到了来自书籍数据库的匹配结果(以及元数据——总结果、当前页面等)。
在选择搜索引擎时,Typesense 有很多优势:
- 它背后的技术是完全开源且受欢迎的。
- 如果您需要,可以轻松配置 HA(高可用性)设置。
- 容忍搜索查询中的拼写错误和其他噪音。
- 高级过滤系统,适用于需要对搜索结果进行细粒度控制的用户。
- 简单的 REST API,尽管他们的文档会让你更加努力地找到它!
- 客户端 (SDK) 可用于一些主要语言(JavaScript、Python、Ruby 和 PHP)。
最后,如果您发现设置新服务器的想法很累,Typesense 还提供云产品,只需单击一下即可进行配置。 按小时计费,读取和写入不计费。 坦率地说,我会说这对大多数企业来说是更好的选择,前提是他们已经提前制定了定价并确保这是一个净收益。
总而言之,Typesense 很有意义(不是双关语!)如果你需要一些小、光滑、精确和真正的主力。
索尼克
Sonic 以成为在“几 MB 内存”上运行的 ElasticSaerch 替代品而自豪。
这怎么可能?
好吧,众所周知,Java 虚拟机 (JVM) 需要大量 RAM(通常,刚启动 JVM 就会消耗大约 1 GB 的 RAM); 因此,使用 Rust 语言(为开发人员提供完全控制和内存安全)编码的东西可以同样快地运行并且只使用几 MB 的 RAM 就不足为奇了。
放松,大家! 那只是项目吉祥物。
在撰写本文时,它的用户中列出了几家公司,尽管我敢肯定还有一些公司没有费心添加他们的名字。 我不记得是如何或确切的时间框架,但我之前遇到过 Sonic; 那时,虽然我很高兴看到内存不足的替代方案,但我认为需要时间来稳定和消除隐藏的错误。 好吧,看起来他们或多或少已经到了; 索尼克的受欢迎程度只有时间才能证明。
好吧,抛开这么长的思考,为什么要考虑将 Sonic 用于您的组织/项目?
以下是一些原因:
- 就搜索引擎而言,内存占用极低。
- 库可用于所有主要的编程语言。 Node、PHP 和 Rust 是作者自己发布的,而其他的则是由社区创建的(高兴,因为像 Elixir 和 Nim 这样的异国情调的僵硬也被涵盖了!)。
- 支持多种语言(数不胜数,但我认为在撰写本文时,支持 40-50 种语言)。
- 惊喜! 你甚至可以使用新的语言,并且引擎会工作(😂😂),虽然你会失去一些高级功能,比如停用词。
- 非常快的引擎。 如果您查看他们的 GitHub 页面,您会发现在某些情况下摄取和搜索时间以微秒为单位! 当然,这是一个单机测试,因为网络延迟永远不会让数字这么低。
如果您想查看此引擎的运行情况,请转到此链接(他们的用户公司之一)并使用您在那里看到的搜索框:
Sonic 作为搜索引擎存在一定的局限性。 开发人员在他们的 GitHub 页面上公开地强调并讨论了它们。 我的建议是仔细检查此列表并确定您的用例与其领域并不相同。 也就是说,一切都有局限性。 只是它们被隐藏起来,所以我们直到为时已晚才意识到这一点。 因此,我认为 Sonic 是搜索引擎的绝佳选择。
TNT搜索
我们现在在这个列表上有一个有趣的条目。 第一个有趣的事情是这个功能完整、生产就绪的搜索引擎是用 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 将自己定位为 Elasticsearch 和传统数据库的竞争对手,并就使用什么和何时使用提供了不错的比较。
如您所见,您希望越接近机器学习驱动的操作,Vespa 就越有意义。 作为中小型企业的纯搜索引擎,我认为它与其他选项相比没有任何优势。
现在,考虑到您不断生成大量数据并希望通过 AI/ML(适合当今许多 SaaS 业务的描述)做出更好的决策,这就是为什么 Vespa 很有意义:
- 开源:没有奇怪的许可证,也没有陷阱合同。 除此之外没有什么可以支付的,尽管我总是强调公司会定期向他们最使用的项目支付费用(即使是每月 50 美元也会对他们有很大帮助)。
- 实时性:Vespa 是真正的实时性。 它不仅可以消化、处理和搜索传入的数据; 甚至它的配置也可以即时修改。
- 可扩展性和容错性:Vespa 的扩展性微不足道。 它对节点的突然消失也有很好的响应,提供了很高的可靠性。
- 排名和推荐:搜索、排名和 Vespa 推荐可以与结构化查询融合,以提供真正准确的结果。
- 无痛 AI/ML:Vespa 捆绑了高质量、预训练的 ML 模型。 您无需雇佣 20 名数据科学家来清理和使用您的数据。
- 自定义插件:有一套完整的 API 可帮助开发人员创建自定义 Java 插件,如果他们需要更改引擎的工作方式。
毫无疑问,Vespa 规模庞大,因此对于稍微超出起始层级的团队来说是显而易见的——无论是团队规模、技术实力、基础设施预算、每日数据量还是其他方面。 对于这一部分,Vespa 将打出本垒打,强烈推荐。
安巴尔
对于某些企业来说,搜索数据还没有被整齐地转换并存储为 JSON 文档; 相反,它是真正意义上的一团糟——各种文档(如 Word、PDF、HTML 文件等)的混乱集合。如果你是其中之一,并且认为你没有希望,那么,说你好安巴尔!
Ambar 最棒的地方在于它可以处理的大型文件类型:
- MS Office 文件格式(.docx、.xlsx 等),包括 PowerPoint、Visio 和 Publisher!
- OpenOffice 文件格式
- 应用了自动 OCR 以提取信息的 PDF 文档。
- 图片
- 电子邮件存档格式,例如 PST(您好,Outlook 用户!)
- 带附件的电子邮件
好东西也不止于此。 Ambar 能够处理大文件(超过 30MB)、ZIP 存档和多线程,以充分利用 CPU 和更快的结果。 因此,如果您在一台被遗忘的服务器上的某个磁盘上存放了多年的文档,那么是时候将其带回并将所有内容提供给 Ambar!
结论
搜索🔎功能强大,搜索神奇,搜索无处不在!
它甚至可能是黑魔法,但今天没有理由为什么每个人(当然,在一些开发人员的帮助下)都无法获得它的好处。 从企业到个人再到政府,此列表中的搜索引擎提供了几乎零努力的产品,具有指数级的收益和影响。
继续获取云服务器并安装您喜欢体验的上述搜索软件。