是否可以在多个核心之间共享fieldType
中定义的Solr schema.xml
?
我在Solr中有许多内核,并发现自己重新定义fieldType
仅基于内置过滤器和标记器。 e.g。
<fieldType name="exact" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
我知道我可以编写自己的Field
类并在内核之间共享它,但是当自定义代码只配置标准过滤器时,创建对自定义代码的依赖似乎很愚蠢。还有更好的方法吗?
请注意,与其他一些示例(配置停用词和字符转换等)相比,上面的示例很简单。
答案 0 :(得分:2)
分享类似&#34;普通&#34;的字段类型可以使用XInclude在多个核心的schema.xml,solrconfig.xml中定义。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- common-types.xml -->
<types>
<fieldType name="exact" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
</types>
并在schema.xml中使用它,如下所示:
<schema version="1.1">
<types>
<!-- Other types here -->
</types>
<xi:include href="file:/path/to/common-types.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</schema>
注意:包含的XML文件必须是单个根节点。
答案 1 :(得分:1)
我不知道在核心之间共享fieldTypes的方法。但是,如果您的核心都具有相同的模式(例如,相同的字段和fieldTypes),则可以在多个核心之间共享该模式,并且只需要在一个位置更新模式。有关设置详情,请参阅此Solr用户邮件列表帖子:Sharing Schema with multiple cores。