solr - 是否可以在 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 配置中看到一个示例(例如Korean)。
但是请注意,最近的 Solr 版本使用托管模式,任何更改都会重写。这意味着所有 XInclude 都将被拉入并重新排列。如果您对此不满意并且更喜欢对架构文件进行版本控制,您可以在 solrconfig.xml 中使用Schema Factory configuration禁用它。
推荐阅读
- laravel - 表格中的表单提交按钮没有功能
- ajax - MissingServletRequestParameterException:必需的长参数 prod_id 不存在
- r - 为什么“dnorm”不将一个概率加起来?
- php - 值没有保存到 laravel 中的数据库中
- python - Python:在循环中迭代条件语句
- swift - 如何在 NSTextField 中调整垂直单行字符串?
- node.js - 在猫鼬的每个查找查询中添加(注入)一个条件
- python - Pygame 中的用户定义键
- excel - SUM公式中的CONCATENATE函数
- spring-boot - 带有 Artemis 2.6.3 多播(主题)的 Spring WebSocketMessageBrokerConfigurer 不起作用