silverstripe / silverstripe-discoverer
搜索查询需求的无服务抽象
1.1.1
2024-09-10 23:14 UTC
Requires
- php: ^8.1
- silverstripe/framework: ^5.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^8.8
This package is auto-updated.
Last update: 2024-09-10 23:36:22 UTC
README
目的
为了提供接口,使您(Silverstripe 开发者)在切换不同的搜索服务提供商(例如:Elastic、Algolia、Silverstripe Search)时,搜索查询不会改变。
交付
为了实现我们的目的,您执行过滤、分面和显示结果的方式可能会发生变化。我们希望学习曲线合理,并且大多数开发者与这段代码的交互是直观的(一旦理解了其背后的思想)。
您将无法使用特定服务格式的“原始过滤”或“原始查询”,因为这不符合此模块的目的——该模块的目的是使用通用接口,让您轻松切换服务。
安装
注意:此模块在没有集成模块的情况下无法使用。
如果您想为开发自己的集成模块安装此模块,则可以使用以下命令安装:
composer require "silverstripe/silverstripe-discoverer"
如果您计划在页面和控制台中搜索,那么您还可能想要考虑使用Silverstripe Discoverer > 搜索 UI
功能支持
是否支持某些功能由 此模块 提供。请注意,不同的搜索提供商通常以不同的方式行事,并且通常具有不同级别的功能支持。此模块旨在提供许多不同服务普遍支持的功能级别。
入门
- 查询、过滤、分面等现在都将通过此模块提供的接口执行。您无法执行(例如)“原始过滤”或“原始分面”,其中您传递的数据是针对特定搜索服务提供商的特定格式。这将破坏此模块的目的,因为如果您的搜索服务提供商发生变化,那么您的“原始过滤”也可能损坏。
- 此模块不假设您的搜索文档与
DataObject
相关,因此建议您的搜索文档包含构建搜索结果所需的所有数据,而无需查询应用程序以获取任何其他信息。 - 当您进行搜索时,您将收到一个包含
PaginatedList
的Record
对象的Result
对象。这些Record
对象将包含您在查询期间请求的任何/所有信息,这是您将信息输出到模板的方式。 - 您的
Record
对象中的字段将与您的搜索索引中的字段匹配,但将转换为 PascalCase,缩写表示为(例如)Id
、Url
等。您可以在字段约定中了解更多信息。
以下还可以找到其他文档
- 简单用法
- 提供了一些基本的代码示例。
- 包含更多关于如何使用
结果
和记录
的细节。
- 详细结果处理
- 关于
结果
、记录
、分页、分析等有更多信息。
- 关于
- 详细查询
- 关于过滤器、分类、排序以及(希望)您需要的所有其他信息,以执行您所需的任何类型搜索。