【问题标题】:Configure DDEV with Apache Solr on Drupal 7 for Search API在 Drupal 7 上使用 Apache Solr 为搜索 API 配置 DDEV
【发布时间】:2020-09-07 17:53:06
【问题描述】:

来自@DamienMcKenna 在Slack

在使用 D7 站点创建 Solr 实例时遇到问题。我将 conf 文件复制到 ~/.ddev/solr/conf 但是当 Solr 启动时,没有创建默认实例。我运行ddev stop --remove-data --omit-snapshot 并重新创建了实例,但该实例仍然不存在。当我去 Solr UI 检查系统时,它显示“没有可用的内核”,当我尝试创建一个名为“dev”的系统时,它说:

Error CREATEing SolrCore 'dev': Unable to create core [dev] 原因:在类路径或 '/opt/solr/server/solr/dev' 中找不到资源 'solrconfig.xml'

【问题讨论】:

    标签: solr drupal-7 ddev


    【解决方案1】:

    我使用 DDEV 1.11.0 版中的示例 docker-compose-solr.yaml 文件在 Drupal 7 项目上取得了成功。

    1. https://github.com/drud/ddev/blob/v1.11.0/pkg/servicetest/testdata/services/docker-compose.solr.yaml 复制到您的.ddev 文件夹并确保第34 行与您要从下面的第2 步复制的solr 版本匹配,例如solr: 6.6

    2. 将文件从sites/all/modules/contrib/search_api_solr/solr-conf/6.x/*.* 复制到.ddev/solr/conf 文件夹中。

    3. 下载并启用search_api_override 模块。

    4. settings.local.php中添加以下内容:

      // For ddev only.
      $conf['search_api_override_mode'] = 'load';
      $conf['search_api_override_servers']['content'] = array(
        'name' => 'DDEV: Solr Server',
        'options' => array(
          'host' => 'solr',
          'port' => '8983',
          'path' => '/solr/dev',
          'http_user' => '',
          'http_pass' => '',
          'excerpt' => 0,
          'retrieve_data' => 1,
          'highlight_data' => 0,
          'http_method' => 'AUTO',
        ),
      );
      

      另外,ymmv。最好只覆盖您单独需要的值……a la:

      $conf['search_api_override_servers']['content']['options']['host'] = 'solr';
      $conf['search_api_override_servers']['content']['options']['port'] = '8983';
      $conf['search_api_override_servers']['content']['options']['host'] = '/solr/dev';
      

      您可能需要修改 'content' 数组索引以匹配您在 Drupal 7 中配置的任何内容作为 Solr 索引的机器名称。

    5. 使用ddev start 启动 ddev。

    注意,我将搜索 API 覆盖值放在 sites/default/settings.local.php 中,而不是人们认为的逻辑位置 (sites/default/settings.ddev.php),以免干扰 DDEV 自己自动生成后一个文件。

    如果 DDEV 在settings.ddev.php 中自动执行此操作会很酷,类似于 DB 服务设置的工作方式,但 AFAICT 这种级别的集成不存在,并且可能永远不会用于 Drupal 7。首先,因为您需要额外的模块(search_api_override)可能存在也可能不存在,其次是因为用户可以随意命名他们的 Solr 服务器,因此很难自动化。例如。 $conf['search_api_override_servers']['content'] 可以是:$conf['search_api_override_servers']['foo']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多