silverstripe/silverstripe-discoverer

搜索查询需求的无服务抽象

安装: 96

依赖者: 3

建议者: 0

安全: 0

星标: 0

关注者: 6

分支: 0

开放问题: 2

类型:silverstripe-vendormodule

1.1.1 2024-09-10 23:14 UTC

README

目的

为了提供接口,使您(Silverstripe 开发者)在切换不同的搜索服务提供商(例如:Elastic、Algolia、Silverstripe Search)时,搜索查询不会改变。

交付

为了实现我们的目的,您执行过滤、分面和显示结果的方式可能会发生变化。我们希望学习曲线合理,并且大多数开发者与这段代码的交互是直观的(一旦理解了其背后的思想)。

您将无法使用特定服务格式的“原始过滤”或“原始查询”,因为这不符合此模块的目的——该模块的目的是使用通用接口,让您轻松切换服务。

安装

注意:此模块在没有集成模块的情况下无法使用。

如果您想为开发自己的集成模块安装此模块,则可以使用以下命令安装:

composer require "silverstripe/silverstripe-discoverer"

如果您计划在页面和控制台中搜索,那么您还可能想要考虑使用Silverstripe Discoverer > 搜索 UI

功能支持

是否支持某些功能由 此模块 提供。请注意,不同的搜索提供商通常以不同的方式行事,并且通常具有不同级别的功能支持。此模块旨在提供许多不同服务普遍支持的功能级别。

入门

  • 查询、过滤、分面等现在都将通过此模块提供的接口执行。您无法执行(例如)“原始过滤”或“原始分面”,其中您传递的数据是针对特定搜索服务提供商的特定格式。这将破坏此模块的目的,因为如果您的搜索服务提供商发生变化,那么您的“原始过滤”也可能损坏。
  • 此模块不假设您的搜索文档与 DataObject 相关,因此建议您的搜索文档包含构建搜索结果所需的所有数据,而无需查询应用程序以获取任何其他信息。
  • 当您进行搜索时,您将收到一个包含 PaginatedListRecord 对象的 Result 对象。这些 Record 对象将包含您在查询期间请求的任何/所有信息,这是您将信息输出到模板的方式。
  • 您的 Record 对象中的字段将与您的搜索索引中的字段匹配,但将转换为 PascalCase,缩写表示为(例如)IdUrl 等。您可以在字段约定中了解更多信息。

以下还可以找到其他文档

  • 简单用法
    • 提供了一些基本的代码示例。
    • 包含更多关于如何使用结果记录的细节。
  • 详细结果处理
    • 关于结果记录、分页、分析等有更多信息。
  • 详细查询
    • 关于过滤器、分类、排序以及(希望)您需要的所有其他信息,以执行您所需的任何类型搜索。

可用的服务集成模块