Symfony 是一个针对PHP的开源网络开发框架,它允许用户通过使用可重用组件集来创建网络应用程序。Symfony起源于法国,它结合了网络应用程序框架、理念和充满活力的社区。

借助Meilisearch,Symfony可以更好地控制文档内容的解析和索引,从而加快并提高搜索结果的质量。

到目前为止,使用Meilisearch一直是一种享受。它从快速简单的安装过程开始,然后是出色而全面的文档,最后是功能强大的搜索引擎,具有令人惊叹的性能。Meilisearch感觉有趣、新颖且简单。 - Javier Eguiluz,Symfony布道者。

挑战

Symfony文档中快速高效地检索信息对于其快速增长的社区的成功至关重要。Symfony文档(包括代码示例)包含超过1200万字,并且在其历史中,Symfony发布了30个不同的版本更新,这使得从文档中平滑地检索信息至关重要。事实上,为了确保搜索功能尽可能地方便symfony.com的访问者使用,该团队集成了多个键盘快捷键以在整个网站上打开搜索输入框。

过去,Symfony团队探索了各种产品和服务,包括Apache Solr、Elasticsearch、Google自定义搜索引擎和Algolia Search。但是,该团队意识到需要更好地控制搜索内容的解析和索引,以便调整搜索规则并改进网站导航和整体搜索体验。虽然使用完全托管的服务很方便,但现有的通过JSON文件配置被证明很麻烦,并且没有为Symfony提供其所需的灵活性。

其次,有潜力提高搜索结果的整体质量,Symfony团队收到了一些关于文档用户不准确或缺失结果的投诉。不幸的是,由于上述对解析和索引过程缺乏控制,对这些结果的重大改进是无法实现的,因此需要更好的替代方案变得显而易见。

为什么Symfony选择了Meilisearch

为了找到更好的替代方案,Symfony团队开始对搜索引擎进行研究。从一开始,他们就倾向于使用Go开发的开源项目,因为他们内部在该语言方面有先前的专业知识。虽然市场上有很多搜索解决方案符合这些要求,但其中许多缺乏积极开发,没有活跃的社区,或者缺少必要的特性,例如对同义词的支持。

最后,该团队关注了Meilisearch,它提供了一个用Rust开发的开源搜索引擎,以及自托管选项,并很快找到了合适的解决方案。Meilisearch作为具有活跃社区的开源项目的良好声誉在影响最终决定中发挥了关键作用。

实施

Meilisearch提供了与各种编程语言和框架的集成。除了托管Symfony的索引数据之外,Meilisearch团队还在迁移过程中提供了宝贵的帮助,因此一个没有Meilisearch使用经验的开发人员能够使用Meilisearch PHP集成和Symfony的HttpClient组件来处理整个迁移和实施过程。

以下是技术集成过程的简要概述

  1. 解析Symfony文档:对于Symfony文档,该过程包括将整个页面内容拆分成多个小文档,以便生成与查询词紧密相关的更准确的搜索结果。
  2. 索引文档是该过程中最简单的部分,包括配置停用词(搜索查询中要忽略的词列表)和同义词以生成更准确的搜索结果。

要全面了解Symfony如何实施文档解析、文档索引和搜索引擎界面,我们建议您查看他们关于将symfony.com搜索引擎迁移到Meilisearch的博客文章。

结果

Symfony团队在评估结果时主要关注两个不同的性能方面

  • 索引内容的性能:Meilisearch每秒可以索引大约800个完整文档,其中包括处理数百个停用词和数十个同义词。
  • 查询的性能:Symfony,包括所有版本的Symfony Docs和捆绑包的文档,解析了12,754个文件并生成了85,146个Meilisearch文档。解析、创建和索引所有这些文档所需的时间为17秒。搜索索引大约占用1.2 GB的磁盘空间,大多数查询在不到10毫秒的时间内返回结果。
Symfony核心团队成员Nicolas Grekas总结如下:“这些数字非常令人印象深刻,并在您键入时实时更新搜索结果时提供了出色的体验。”

为了完成评估过程,Symfony团队对之前的搜索引擎结果和新的Meilisearch引擎进行了全面比较。他们测试了典型的查询、罕见的查询、较长的查询和包含拼写错误的查询。以下是实施Meilisearch之前(左)和之后(右)获得的搜索结果比较

自从新的搜索体验部署以来,该团队还没有收到社区的任何负面反馈,而负面反馈通常是搜索体验质量的指标。

愿景

目前,Symfony团队对Meilisearch的功能感到满意,它提供了所有必需的功能,包括索引任意信息、排序、结果权重、处理停用词、同义词、方面、过滤等。

Symfony布道者Javier Eguiluz建议:“在将它集成到您的项目中之前,请注意一些已知限制。如果您的项目需求很复杂(例如,跨多个索引的跨方面等),请确保检查这些高级功能是否已受支持。此外,建议您查看Meilisearch公开路线图。”

要全面了解Symfony如何实施文档解析、文档索引和搜索引擎界面,我们建议您查看他们关于将symfony.com搜索引擎迁移到Meilisearch

准备好优化您的文档搜索了吗?立即开始免费试用Meilisearch。