
Symfony 是一个用于 PHP 的开源 Web 开发框架,它允许用户通过利用一组可重用组件来创建 Web 应用程序。Symfony 起源于法国,它结合了 Web 应用程序框架、一种理念和一个充满活力的社区。
借助 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 组件处理整个迁移和实现过程。
以下是技术集成过程的简要概述
- 解析 Symfony 文档:对于 Symfony 的文档,该过程包括将整个页面内容分割成多个小文档,以便生成与查询词密切相关的更好搜索结果。
- 索引文档是该过程中最简单的部分,包括配置停用词(在搜索查询中忽略的词列表)和同义词以生成更好的搜索结果。
要全面了解 Symfony 如何实现其文档解析、文档索引和搜索引擎接口,我们建议查阅其关于将 symfony.com 搜索引擎迁移到 Meilisearch 的博客文章。
结果
Symfony 团队在评估结果时主要关注两个不同方面的性能
- 内容索引性能:Meilisearch 每秒可以索引大约 800 个完整文档,其中包括处理数百个停用词和数十个同义词。
- 查询性能:Symfony,包括所有版本的 Symfony 文档和捆绑包文档,解析 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。