带有段落和反向引用的 Drupal 搜索 API
Drupal's Search API with Paragraphs and Reverse references
我想以这种方式配置 Drupal 的搜索 API,这样就可以索引(并搜索)一个段落引用的实体类型(人),而该段落又被另一个引用实体类型(文章)。
那是大约。我有的。 Article 和 Person 是内容类型。编辑一篇文章让你选择一个特定角色的人,它被保存为段落。到目前为止所有工作都很棒!
+-----------+
| Paragraph |
+-----------+
+------> ID: 1 | +---------+
+---------+ | | P_ID: 200 <-----+ | Person |
| Article | | | ... | | +---------+
+---------+ | +-----------+ +-----+ ID: 200 |
| ID:100 | | | ... |
| P_ID: 1 +-------+ +---------+
| ... |
+---------+
+--------+------------------+
| Person | Title of Article |
+---------------------------+
| John | T1, T3, T6 |
| Alice | T2 |
| Bob | T4, T5 |
+--------+------------------+
我喜欢的是 Search-API 搜索索引,其中包含人名和以逗号分隔的列表形式的链接文章。 (有没有文章的人。)
是否可以使用 Drupal 的搜索来做到这一点 API?如果是,怎么办?我从哪种内容类型开始?我需要使用反向参考字段吗?
Search API 模块允许其他模块(根据您的情况定制)提供可以索引的其他属性 通过 实现处理器插件 。然后,这些属性将像搜索索引的 "Add fields" 表单中的 "normal" 一样列出。
这种处理器的最简单示例是 "URL field" 处理器,它添加了 "URI" 字段(可以在 "General" 数据源部分找到) .您可以查看该处理器的最新版本 code here.
我不会在这里解释整个编码解决方案(它很长)。为此目的,Drupal 8 Search API 上有一个优秀的文档:Create custom fields using a custom processor
这里还有一个有用的link: Make adding new properties/fields more a first-class operation of processors
这里是您需要的快速总结:
- 创建自定义模块
在此模块上创建一个新的 search_api 的 Processos 插件
my_module 上 my_module/src/Plugin/search_api/processor/AddPersonName.php
下的文件示例
<?php
namespace Drupal\my_module\Plugin\search_api\processor;
/**
* Custom Search API processos.
*
* @SearchApiProcessor(
* ...
* ...
* ...
* )
*/
class AddPersonName extends ProcessorPluginBase {
// ...
}
在 AddPersonName::getPropertyDefinitions()
上定义自定义属性
- 在
AddPersonName::addFieldValues()
的索引时计算 属性 值
- 在您的搜索 API 索引中配置您的新插件(因此在您的 Drupal 管理中)
希望本教程对您有所帮助。
我想以这种方式配置 Drupal 的搜索 API,这样就可以索引(并搜索)一个段落引用的实体类型(人),而该段落又被另一个引用实体类型(文章)。
那是大约。我有的。 Article 和 Person 是内容类型。编辑一篇文章让你选择一个特定角色的人,它被保存为段落。到目前为止所有工作都很棒!
+-----------+
| Paragraph |
+-----------+
+------> ID: 1 | +---------+
+---------+ | | P_ID: 200 <-----+ | Person |
| Article | | | ... | | +---------+
+---------+ | +-----------+ +-----+ ID: 200 |
| ID:100 | | | ... |
| P_ID: 1 +-------+ +---------+
| ... |
+---------+
+--------+------------------+
| Person | Title of Article |
+---------------------------+
| John | T1, T3, T6 |
| Alice | T2 |
| Bob | T4, T5 |
+--------+------------------+
我喜欢的是 Search-API 搜索索引,其中包含人名和以逗号分隔的列表形式的链接文章。 (有没有文章的人。)
是否可以使用 Drupal 的搜索来做到这一点 API?如果是,怎么办?我从哪种内容类型开始?我需要使用反向参考字段吗?
Search API 模块允许其他模块(根据您的情况定制)提供可以索引的其他属性 通过 实现处理器插件 。然后,这些属性将像搜索索引的 "Add fields" 表单中的 "normal" 一样列出。
这种处理器的最简单示例是 "URL field" 处理器,它添加了 "URI" 字段(可以在 "General" 数据源部分找到) .您可以查看该处理器的最新版本 code here.
我不会在这里解释整个编码解决方案(它很长)。为此目的,Drupal 8 Search API 上有一个优秀的文档:Create custom fields using a custom processor
这里还有一个有用的link: Make adding new properties/fields more a first-class operation of processors
这里是您需要的快速总结:
- 创建自定义模块
在此模块上创建一个新的 search_api 的 Processos 插件
my_module 上
下的文件示例my_module/src/Plugin/search_api/processor/AddPersonName.php
<?php namespace Drupal\my_module\Plugin\search_api\processor; /** * Custom Search API processos. * * @SearchApiProcessor( * ... * ... * ... * ) */ class AddPersonName extends ProcessorPluginBase { // ... }
在
AddPersonName::getPropertyDefinitions()
上定义自定义属性
- 在
AddPersonName::addFieldValues()
的索引时计算 属性 值
- 在您的搜索 API 索引中配置您的新插件(因此在您的 Drupal 管理中)
希望本教程对您有所帮助。