在Drupal 7上使用Apache Solr为Search API配置DDEV

问题描述

来自Slack中的@DamienMcKenna

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

创建SolrCore'dev'时出错:无法创建核心[dev]原因:在类路径或'/ opt / solr / server / solr / dev'中找不到资源'solrconfig.xml'

解决方法

我使用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。最好只覆盖单独需要的值……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。

注意,我将Search API替代值放置在sites/default/settings.local.php中,而不是将其视为逻辑位置(sites/default/settings.ddev.php),以免干扰DDEV自己自动生成后者文件。

如果DDEV在settings.ddev.php中自动执行此操作(类似于数据库服务设置的工作方式),那将很酷,但是AFAICT尚不存在这种集成级别,并且对于Drupal 7来说可能永远不会如此。首先,因为您需要一个可能存在或可能不存在的附加模块(search_api_override),其次是因为用户能够根据需要命名其Solr服务器,因此很难实现自动化。例如。 $conf['search_api_override_servers']['content']可能类似于:$conf['search_api_override_servers']['foo']

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...