API поиска Drupal с параграфами и обратными ссылками - PullRequest
0 голосов
/ 29 января 2019

Я бы хотел настроить API поиска в Drupal таким образом, чтобы можно было индексировать (и выполнять поиск) тип сущности (Person), на который ссылается абзац, а на этот абзац ссылается другой тип сущности (Article).

Это ок.что я имею.Статья и Персона являются типами контента.Редактируя статью, вы можете выбрать человека в определенной роли, который будет сохранен в виде абзаца.Пока что все отлично работает!

                         +-----------+
                         | 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           |
+--------+------------------+

Мне нравится иметь поисковый индекс API поиска с именем человека и связанными статьями в виде списка через запятую.(Есть люди без статей.)

Возможно ли это сделать с помощью API поиска Drupal?И если да, то как?На каком типе контента мне начинать?Нужно ли использовать поля обратной ссылки?

1 Ответ

0 голосов
/ 30 января 2019

Модуль Search API позволяет другим модулям (в вашем случае настраиваемым) предоставлять дополнительные свойства, которые можно индексировать с помощью , реализуя плагин процессора .Эти свойства будут перечислены точно так же, как и «обычные» в форме «Добавить поля» поискового индекса.

Простейшим примером такого процессора является процессор «поля URL», который добавляетПоле «URI» (его можно найти в разделе «Общие» источника данных).Вы можете просмотреть последнюю версию кода этого процессора здесь .

Я не буду объяснять здесь все решение для кодирования (оно довольно длинное).Для этого существует документация Excellente по API поиска Drupal 8: Создание настраиваемых полей с использованием настраиваемого процессора

Вот еще одна полезная ссылка : сделать добавление новых свойств / полей болеепервоклассная работа процессоров


Вот краткое суммирование, что вам потребуется:

  1. Создание собственного модуля
  2. Создатьновый плагин Processos для search_api в этом модуле

    Пример с файлом на 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 {
       // ...
     }
    
  3. Определение пользовательских свойств дляAddPersonName::getPropertyDefinitions()

  4. Вычисление значений свойств во время индексации на AddPersonName::addFieldValues()
  5. Сконфигурируйте ваш новый плагин в вашем индексе API поиска (так же в вашей администрации Drupal)

Надеюсь, этот урок вам поможет.

...