solr - Solr 字段类型如何在多个内核之间共享?

标签 solr

是否可以分享Solr fieldType s 定义于 schema.xml多核之间?

我在 Solr 中有许多核心,发现自己正在重新定义 fieldType s 仅基于内置过滤器和分词器。例如

<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类并在内核之间共享它,但是当自定义代码仅配置标准过滤器时,创建对自定义代码的依赖似乎很愚蠢。有没有更好的办法?

请注意,与其他一些示例(配置停用词和字符转换等)相比,上面的示例很简单。

最佳答案

使用 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 文件必须是单个根节点。

关于solr - Solr 字段类型如何在多个内核之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9190269/

相关文章:

java - 如何在 Spring Solr 中搜索多个值

java - Apache Solr - 如何索引源代码文件

solr - 将 Solr 用作 DB 是一种好习惯吗

datetime - solr搜索时间范围内的时间

solr - Nutch 没有抓取seed.txt 中的所有URL

solr - 如何手动合并solr中的段?

solr - 获取solr中多值字段的数量

elasticsearch - ElasticSearch 上 Solr 的 copyField 是否等效?

solr - 来自 Solrj 的引用格式 json

solr - 关于Solr Sharding的问题