Drupal 的带有段落和反向引用的搜索 API
Posted
技术标签:
【中文标题】Drupal 的带有段落和反向引用的搜索 API【英文标题】:Drupal's Search API with Paragraphs and Reverse references 【发布时间】:2019-01-29 16:28:42 【问题描述】:我想以这种方式配置 Drupal 的搜索 API,以便可以索引(和搜索)段落引用的实体类型(Person)并且该段落被另一个实体类型(文章)引用。
大约是。是)我有的。 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 可以做到这一点吗?如果是,如何?我从哪种内容类型开始?我需要使用反向引用字段吗?
【问题讨论】:
【参考方案1】:Search API 模块允许其他模块(在您的情况下是自定义模块)通过实现处理器插件提供可以索引的其他属性 >。然后,这些属性将像搜索索引的“添加字段”表单中的“正常”属性一样列出。
这种处理器的最简单示例是“URL 字段”处理器,它添加了“URI”字段(可以在“常规”数据源部分中找到)。您可以查看该处理器的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 Plugin
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 管理中)
希望本教程对您有所帮助。
【讨论】:
乐于助人! 我也想用 title 和 nid 等索引链接节点。我怎样才能做到这一点?我发现我必须使用 EntityProcessorProperty(而不是 ProcessorProperty)。但是我需要在 addFieldValues() 中做什么?以上是关于Drupal 的带有段落和反向引用的搜索 API的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 7:如何根据当前页面内容过滤视图内容(带有实体引用字段)
Drupal 7 GeoField Proximity 使用搜索 API 索引