首页 > 解决方案 > 是否可以在 Solr 的另一个模式文件中“导入”一个模式文件?

问题描述

我有一个非常大的单一模式文件,因为它具有多种语言的预定义字段。并非所有字段都会被所有消费者使用(事实上,大多数只会使用 1-2 种语言),但我们需要为客户端提供合理的默认值。使用起来并不是很糟糕,但如果我可以按语言划分模式,管理起来会容易得多。

是否可以让架构文件导入另一个文件?就像是,

<schema name="catalog-config" version="1.6">
   ...
   <import file="./lang/spanish.xml"/>
   ...
</schema>

标签: solr

解决方案


使用XInclude.

您的 schema.xml 可能已经包含xi:include代码块(未注释),例如。

  <fields>
    <!-- regular/dynamic fields definitions... -->
  </fields>

  <xi:include href="schema_fields_spanish.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
    <xi:fallback></xi:fallback>
  </xi:include>

您可以在 TYPO3 搜索的 Solr 配置中看到一个示例(例如Korean)。

但是请注意,最近的 Solr 版本使用托管模式,任何更改都会重写。这意味着所有 XInclude 都将被拉入并重新排列。如果您对此不满意并且更喜欢对架构文件进行版本控制,您可以在 solrconfig.xml 中使用Schema Factory configuration禁用它。


推荐阅读