是否可以在TYPO3中的域内为不同的子树使用不同的Solr核心?

时间:2017-09-15 09:00:49

标签: solr typo3

背景:我们的pagetree不支持语言覆盖,也不适用于每个域的单独域。不同的语言由域下的子树表示。

Pagetree:

  • example.com(Rootpage + sys_domain)
      • Seite 1
      • Seite 2
      • Page 1
      • Page 2

我们正在使用TYPO3,EXT:solr和Solr。

是否可以在TYPO3中的域内为不同的子树使用不同的Solr核心?

到目前为止,我找到了一种基于TS条件处理不同语言和核心的解决方案:[globalVar = GP:L = 1]。但那不是我们的用例。

此外,我发现了一个6年前的问题,它完全代表了用例,但没有得到肯定答案(https://forum.typo3.org/index.php/t/158570/)。

有人可以给我一个提示吗?这个用例是否可能?

2 个答案:

答案 0 :(得分:3)

是的,这可以使用EXT版本7:solr

  • 在页面“de”和页面“en”
  • 上设置“用作根页”
  • 删除Rootpage上的“用作根页”,如果已设置(如果使用EXT:realurl,请确保在配置中明确设置)
  • 将以下行添加到AdditionalConfiguration.php

`

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['sites']['<uid of page "de">']['domains'] = ['your.domain.de'];
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['sites']['<uid of page "en">']['domains'] = ['your.domain.de'];
  • 根据需要在TypoScript常量中配置“de”和“en”页面上的核心

`

plugin.tx_solr {
  solr {
    scheme = http
    host = <your-solr-dhost>
    port = 80
    path = <your-solr-core>
  }
}

然后你需要调度任务来索引网站......一个用于“de”,一个用于“en”。

在这里工作得非常好: - )

答案 1 :(得分:0)

根据我的经验,这很可能是不可能的。 原因是,EXT:solr工具需要一个常见的TypoScript配置,它同时适用于后端和前端上下文。 这就是为什么他们选择不根据前端请求评估TypoScript配置(这可以使页面树中任何位置的配置不同),而是基于标记为域根的页面。

因此,配置解析器首先查找此类页面,然后在树中的特定级别/点评估TypoScript设置。

我认为你唯一的解决方案是对上述机制做出相当深刻的改变,这是可能的,我自己做了(排除一些根级页面,因为我有很多)。 通过这种方式,您可以指示引擎从您想要的树中的任何固定位置获取TypoScript设置。

如果您有兴趣尝试这个,这将是扩展的类方法:ApacheSolrForTypo3 \ Solr \ ConnectionManager :: getConfiguredSolrConnections()