Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3 Solr Search:将自定义索引队列限制为特定语言的核心_Solr_Typo3_Typo3 7.6.x - Fatal编程技术网

TYPO3 Solr Search:将自定义索引队列限制为特定语言的核心

TYPO3 Solr Search:将自定义索引队列限制为特定语言的核心,solr,typo3,typo3-7.6.x,Solr,Typo3,Typo3 7.6.x,一段时间以来,我一直在为TYPO3(7.6.4)修改ext_solr扩展(3.1.1)。我的配置为两种不同的语言(英语和德语)使用两个Solr内核;这对于普通页面来说效果非常好。在TS常量中,核心配置如下: plugin.tx_solr.solr.path = /core_en/ [globalVar = GP:L = 1] plugin.tx_solr.solr.path = /core_de/ [end] 为了分别从数据库中获得英语和德语的结果,我创建了两个不同的MySQL视图,它们提供了

一段时间以来,我一直在为TYPO3(7.6.4)修改ext_solr扩展(3.1.1)。我的配置为两种不同的语言(英语和德语)使用两个Solr内核;这对于普通页面来说效果非常好。在TS常量中,核心配置如下:

plugin.tx_solr.solr.path = /core_en/
[globalVar = GP:L = 1]
plugin.tx_solr.solr.path = /core_de/
[end]
为了分别从数据库中获得英语和德语的结果,我创建了两个不同的MySQL视图,它们提供了正确的结果。然后,我继续设置这些视图的索引,如下所示:

plugin.tx_solr.index.queue {
[globalVar = GP:L = 0]
myindex = 1
myindex {
  table = my_view
  fields {
    abstract = abstract
    title = title
    tstamp = tstamp
    content = SOLR_CONTENT
    content {
      field = bodytext
    }
    url = TEXT
    url {
      typolink.parameter = 17
      typolink.additionalParams = &... [URL works correctly]
      typolink.additionalParams.insertData = 1
      typolink.returnLast = url
    }
  }
}
[end]
[globalVar = GP:L = 1]
myindex_de = 1
myindex {
  table = my_view_de

  fields {
    abstract = abstract
    title = title
    tstamp = tstamp
    content = SOLR_CONTENT
    content {
      field = bodytext
    }
    url = TEXT
    url {
      typolink.parameter = 17
      typolink.additionalParams = &...
      typolink.additionalParams.insertData = 1
      typolink.returnLast = url
    }
  }
}
[end]
}

然而,这两种语言版本最终都包含在两个核心中。对此我能做些什么吗?

你的情况不正常。文档中写道:“请注意,条件不能在花括号内使用。”


您需要从根级别开始包装打字脚本,并使第一个级别“plugin.tx_solr…”多余

首先:如上所述,打字条件有一个规则:

Note that conditions cannot be used inside of curly brackets.
所以你必须改变它

其次,您的代码中有一个输入错误:

myindex_de = 1
myindex {
  table = my_view_de

  fields {
    abstract = abstract
    title = title
    tstamp = tstamp
    content = SOLR_CONTENT
    content {
      field = bodytext
    }
    url = TEXT
    url {
      typolink.parameter = 17
      typolink.additionalParams = &...
      typolink.additionalParams.insertData = 1
      typolink.returnLast = url
    }
  }
}
第二行:也应该是myindex\u de

一般而言我建议您采用不同的解决方案:

1:稍有不同的解决方案:

您引用的字段与我在myindex和myindex\u de中看到的字段相同。因此,如果唯一不同的是语言,那么在您的视图中,将其准备为sys\u language\u uid是有意义的

2:始终有效的“终极”解决方案:

如果要处理一个非常特殊的情况,可以使用PHP代码重写索引器并创建自己的索引。这是一种更好的方法,因为您可以在索引器内部制作更多的内容,就像在视图中一样。比如:

  • FE用户权限
  • 语言差异
  • 它用作一个单独的调度程序任务,您可以提供额外的 属性作为它的设置
我已经使用了这两种方法,而且这是真的,有了视图,您可以从复杂的数据结构中快速、轻松地构建“一行”变体。
但是,在Indexer类中,在一起构建内容之前,您可以完全自由地进行数据清理/数据操作

谢谢。我根据您的回答更改了配置,但是现在索引队列初始化只提供英文版本(myindex),而不是德语版本(myindex_de)。还有其他想法吗?@SaschaKersken:看我上面的答案,你的打字稿中还有一个打字错误谢谢,我现在就去试试。至于你提到的打字错误:它不是在真实的代码中,而是在我匿名并简化真实代码后发布到这里时发生的。