是否可以 "import" Solr 中另一个模式文件中的模式文件?

Is it possible to "import" a schema file in another schema file in Solr?

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

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

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

使用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 配置中看到这方面的示例(例如 for Korean)。

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

禁用它