openeuropa/oe_search

搜索OpenEuropa项目的搜索功能。

安装次数: 72,084

依赖项: 2

建议者: 0

安全: 0

星标: 1

关注者: 17

分支: 0

开放问题: 1

类型:drupal-module


README

Build Status

OpenEuropa搜索模块将Europa Search ClientSearch API集成。

Europa Search是欧盟委员会的企业搜索引擎。

计划中的未来开发

  • 文件导入
  • 搜索:简单、高级、分面搜索
  • 与翻译集成

限制

  • 只能导入内容实体。
  • 导入的实体应公开规范URL。或者,第三方代码可以更改正在导入的文档并提供任意URL。请参阅下面的API部分。

需求

有关依赖项的完整列表,请检查composer.json文件。

开发环境搭建

您可以通过以下步骤构建开发站点:

  • 安装Composer依赖项
composer install

composer install之后,将自动触发post命令钩子(drupal:site-setup)。它将确保开发站点中设置了必要的符号链接。它还会在开发配置文件(如behat.yml.dist)中执行令牌替换。

  • 通过运行以下命令安装测试站点:
./vendor/bin/run drupal:site-install

您的测试站点将在http://localhost:8080/build上可用。

请注意:项目文件和目录通过使用OpenEuropa Task Runner的Drupal项目符号链接命令在测试站点内部进行符号链接。

如果您在项目的根目录中添加了新文件或目录,您需要重新运行drupal:site-setup以确保它们被正确符号链接。

如果您不想重新运行完整的站点设置,您可以简单地运行

$ ./vendor/bin/run drupal:symlink-project

使用Docker Compose

或者,您可以使用提供的配置使用DockerDocker Compose来构建开发站点。

Docker提供了必要的服务和技术,如Web服务器和数据库服务器,以运行站点,无论您的本地主机配置如何。

需求

配置

默认情况下,Docker Compose读取两个文件,一个docker-compose.yml和一个可选的docker-compose.override.yml文件。按照惯例,docker-compose.yml包含您的基配置,并默认提供。重写文件,顾名思义,可以包含对现有服务或完全新服务的配置重写。如果服务在两个文件中都定义,Docker Compose将合并配置。

有关Docker Compose扩展机制的更多信息,请参阅官方Docker Compose文档

用法

要启动,请运行

docker-compose up

建议不要使docker-compose以守护进程形式运行,这样您在完成工作后可以快速关闭它(使用CTRL+C)。然而,如果您想以守护进程形式运行它,必须添加标志-d

docker-compose up -d

然后

docker-compose exec web composer install
docker-compose exec web ./vendor/bin/run drupal:site-install

使用默认配置,开发站点的文件应在build目录中,开发站点可通过以下地址访问:http://127.0.0.1:8080/build

运行测试

运行grumphp检查

docker-compose exec web ./vendor/bin/grumphp run

运行phpunit测试

docker-compose exec web ./vendor/bin/phpunit

步骤调试

要从命令行启用步骤调试,请将任何值传递给容器的XDEBUG_SESSION环境变量

docker-compose exec -e XDEBUG_SESSION=1 web <your command>

请注意,从XDebug 3开始,如果设置了变量但您的客户端没有监听调试连接,控制台将输出连接错误消息。此错误消息会导致PHPUnit测试出现假阴性。

要从浏览器启动步骤调试,请使用浏览器扩展或书签工具(如JetBrains生成的),具体请访问https://www.jetbrains.com/phpstorm/marklets/

贡献

请阅读完整文档,了解我们的行为准则以及向我们提交pull请求的过程。

版本控制

我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库的标签

API

更改正在被索引(索引)的文档

第三方模块可以通过订阅Drupal\oe_search\Event\DocumentCreationEvent事件来拦截和更改索引的文档

mymodule.service.yml:

services:
  mymodule.alter_indexed_doc:
    class: Drupal\mymodule\EventSubscriber\AlterIndexedDocSubscriber
    tags:
      - { name: 'event_subscriber' }

src/EventSubscriber/AlterIndexedDocSubscriber.php:

<?php

namespace Drupal\mymodule\EventSubscriber;

use Drupal\oe_search\Event\DocumentCreationEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class AlterIndexedDocSubscriber implements EventSubscriberInterface {

  public static function getSubscribedEvents(): array {
    return [DocumentCreationEvent::class => 'setReleased'];
  }

  public function setReleased(DocumentCreationEvent $event): void {
    $entity = $event->getEntity();
    if ($entity->getEntityTypeId() === 'foo') {
      $event->getDocument()->setUrl("http://example.com/{$entity->uuid()}");
    }
  }

}