7个自托管的强大搜索🔍引擎软件,适用于您的产品
看起来很艰巨,但在您的应用程序中添加强大的搜索功能既不复杂也不耗时。以下是一些可靠的建议!
尽管过去的2-3十年中出现了许多令人印象深刻的技术,但搜索是极少数已经成为我们生活中不可或缺的技术之一。它无处不在-电子商务网站、博客、知识库等等-不是因为搜索框和图标看起来很酷,而是因为它提供了迫切需要的功能。
如果您是寻找良好搜索解决方案的企业,或者对现有解决方案感到厌倦,您该怎么办?
幸运的是,您不需要支付荒谬的许可费用,也不需要维护一个由20名开发人员和系统管理员组成的团队。今天我有一些搜索引擎推荐,可以在短时间内安装和集成,特别适用于由1-2名开发人员组成的中小型企业。
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就像解压缩并运行程序一样简单。对于简单的单机系统,不需要复杂的维护;只需关注ram的使用情况,因为通常搜索解决方案和基于java的技术对ram的需求很高(因为它们将或尝试将所有内容保存在ram中以提供快速读写)。
管理面板
solr带有一个管理面板,可以进行可视化监控和配置。通过一些简单的培训,甚至非开发人员也可以学会阅读关键图表。在这个列表中,没有多少搜索解决方案具有这样的功能。
基于api,符合标准
solr提供了一个api,可以处理多种格式的结果界面-json、csv、xml和二进制。它按照jmx标准输出监控数据,这对于java开发人员来说是一个巨大的福音。
关于solr还有更多要说的,但是要覆盖所有内容将需要很长时间。😂可以说solr是一个一流的解决方案,无论您处理什么类型的数据,您都不会错。
elasticsearch
elasticsearch是自由文本搜索的先驱,而且现在仍然如此。事实上,即使是今天,如果你向程序员或系统管理员询问关于搜索引擎的建议,他们很可能只会提到elasticsearch。当然,这些天,很多人也会推荐像algolia这样的东西,但我们已经解释过那里面的情况了。🤪
不要被上图中的“开始免费试用”按钮所误导。虽然核心的elasticsearch技术本身是开源和免费的,但该公司正在努力将其努力变现并面向企业。因此,你在这里看到的实际上是他们的云服务的试用版,特别是在涉及到群集时,便于管理elasticsearch。
哎呀,有这么多的纠结。让我们回顾一下:elasticsearch是开源和免费的,任何人都可以轻松设置并使用,没有任何限制。
现在,正如我们所预期的,让我们深入了解选择elasticsearch的原因:
- 成熟的、经过经过大量实战的搜索引擎。这意味着如果你遇到“奇怪”的错误,你更有可能找到解决方案。
- 对集群化、可扩展性和异步写入的重视程度是一流的。
- 可以通过一个简单的rest api进行访问(这也是其他人最终都在复制的)。
- 面向文档,但如果需要,也支持模式。
- 搜索结果非常快速和准确。可配置的搜索速度。
- 文档非常全面且有用的文档。
- 一套完整的搜索和分析云平台(elk堆栈),如果你愿意为方便而付费的话。
我对elasticsearch唯一挑剔的地方就是它消耗大量的内存。我的意思是,作为顾问,很难说服客户投资一台每月20美元的服务器,而这远远不满足elasticsearch的要求。
如果你对学习elasticsearch感兴趣,那就去看看这个udemy课程。
typesense
typesense是一个轻量级、简单、但功能强大的搜索引擎。那些寻求实用性和简洁性的人应该一定要试试它。
typesense最好的一点是你可以在他们的网站上直接试用。这可以避免在你设置好一切并尝试api的情况下,发现其中一个或多个功能不符合你的期望而产生的挫败感和浪费时间。
这并不是说引擎中可能有错误;只是引擎对某些东西的处理可能不符合你的偏好,或者与你的业务领域完全冲突。拼写错误、特殊符号、同义词等等……你可以在主页上直接检查引擎给出的结果(它们在使用这个书籍数据库)。
正如你所见,这个部分就在最上面的那个部分下面。在搜索框中,我输入了查询“tra”,下面我看到了来自书籍数据库的匹配结果(以及元数据-总结果、当前页面等)。
typesense在选择搜索引擎方面有很多好处:
- 它背后的技术完全是开源的,欢迎参与。
- 如果需要,可以轻松配置高可用性(ha)的设置。
- 对于拼写错误和其他搜索查询中的噪音,它有很高的容忍度。
- 对于那些需要对搜索结果进行细粒度控制的人来说,它有一个先进的过滤系统。
- 它有一个简单的rest api,尽管他们的文档会让你额外努力去找到它!
- 针对一些主要语言(javascript、python、ruby和php),有可用的客户端(sdk)。
最后,如果你觉得设置新服务器很累人,typesense也有一个云服务提供,只需点击一次即可完成配置。计费按小时计,读写不受限制。坦率地说,对于大多数企业来说,这是更好的选择,前提是他们事先计算好价格并确保是净收益。
总的来说,如果你需要一些小巧、简洁、精确且真正强大的东西,typesense是一个非常明智的选择。
sonic
sonic自豪地宣称自己是elasticsearch的替代品,只需运行“几mb的ram”。
这是如何实现的呢?
嗯,众所周知,java虚拟机(jvm)很贪吃内存(通常情况下,仅启动jvm就会吃掉大约1gb的内存);所以不奇怪,在rust语言编写的代码(为开发人员提供完全的控制和内存安全性)中,可以运行得一样快,并且只使用几mb的内存。
截至目前为止,有几家公司列为其用户,虽然我相信还有一些公司没有列出他们的名字。我不记得是如何发现sonic的,也不记得确切的时间范围,但我之前确实遇到过sonic;那时,虽然我很高兴看到了一种低内存的替代方案,但我认为它需要时间来稳定和消除隐藏的错误。好吧,看起来他们已经相对稳定了;sonic变得有多受欢迎只有时间才能告诉我们。
好了,除了沉思之外,你为什么要考虑在你的组织/项目中使用sonic呢?
以下是一些原因:
- 就搜索引擎而言,内存占用极低。
- 所有主要编程语言都有可用的库。node、php和rust是作者自己发布的,而其他语言是由社区创建的(值得庆幸的是,甚至包括像elixir和nim这样的奇特语言)。
- 支持多种语言(我没办法准确地计算,但我认为截至目前,支持40-50种语言)。
- 一个惊喜!你甚至可以使用新的语言,引擎也能正常工作(😂😂),尽管你将失去一些高级功能,比如停用词。
- 非常快速的引擎。如果你查看他们的github页面,你会看到在几个案例中,摄取和搜索时间都是微秒级的!当然,这是单机测试,因为网络延迟永远不会使数字达到这么低。
如果你想看到这个引擎的实际效果,请访问此链接(他们的用户公司之一)并尝试使用你在那里看到的搜索框:
sonic作为搜索引擎有一定的限制。开发人员在他们的github页面上公开强调和讨论了这些限制。我的建议是仔细检查这个列表,并确认你的用例与他们的领域不相同。话虽如此,每个东西都有限制;只是限制被隐藏起来了,所以在太迟之前我们都没有意识到。因此,我认为sonic是一个很好的搜索引擎选择。
tntsearch
现在,我们在这个列表上有一个引人入胜的条目。第一个有趣的事情是,这个功能齐全、可投入生产的搜索引擎是用php编写的!
是的,所有可能的语言中,是php。我这样说不是因为我讨厌php,而是因为它是一种短暂的进程设计。
第二件有趣的事情是他们的许可证,至少在写作时是这样的。实际上,许可证本身是mit许可证,所以没什么问题,但作者将这个软件归类为ps4ware;如果你在生产中使用tntsearch,你应该送给他们一个ps4游戏!😂😂 现在,这并不是强制性的,因为“should”表明,但这真是太有趣了。我也希望他们将其升级为ps5许可证,尽管现在为时过早。
无论如何,作为一个有着扎实的php + laravel背景的人,我非常赞赏这些人的努力。他们的网站没有多少信息,但似乎表明他们是顾问,所以我强烈推荐如果你有项目要联系他们!
现在,有没有使用tntsearch的好理由呢?
是的,有:
- 以php编码,用于php,由php完成。php生态系统需要更多像这样专注、高质量的解决方案。
- 重要功能包括模糊搜索、地理搜索和文本分类。
- 更改搜索索引非常容易,这是许多解决方案所缺乏的主要灵活性。
- 词干处理、bm25排序和自定义分词确保高准确性。
- 部署简单——就像任何其他composer包一样!
您可以在此处检查引擎性能here,亲自体验其速度和准确性。我要再次强调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将取得巨大成功,并且强烈推荐使用。
结论
搜索🔎是强大的,搜索是魔力,搜索无处不在!
它甚至可能是黑魔法,但今天没有理由为什么每个人(当然需要一些开发者的帮助)不能享受它的好处。从企业到个人再到政府,在这个列表中的搜索引擎提供了一个几乎零努力的选择,带来了指数级的好处和影响。
继续并获取一个云服务器,安装你喜欢的上述列出的搜索软件来体验吧。