zoukankan      html  css  js  c++  java
  • 认识配置文件schema.xml(managed-schema)

    1、schema文件是在SolrConfig中的架构工厂定义,有两种定义模式:

    1.1、默认的托管模式:

    solr默认使用的就是托管模式。也就是当在solrconfig.xml文件中没有显式声明<schemaFactory/>时,Solr隐式地使用ManagedIndexSchemaFactory,它是默认的"mutable"并将模式信息保存在一个managed-schema文件中。

    1. <span style="font-size:14px;"><!-- An example of Solr's implicit default behavior if no  
    2.       no schemaFactory is explicitly defined.  
    3.  -->  
    4.   <schemaFactory class="ManagedIndexSchemaFactory">  
    5.     <bool name="mutable">true</bool>  
    6.     <str name="managedSchemaResourceName">managed-schema</str>  
    7.   </schemaFactory></span
    当然,也可以显式的声明schema文件,但是,当显式的声明schema文件的时候,文件的名字不能是managed-schema也不能是schema.xml。同时schema文件的名字也要与solrconfig.xml中声明的schema文件名一样。
    1.2、经典schema.xml:

    这种模式的配置方式是在solrconfig.xml文件中显式配置一个ClassicIndexSchemaFactory。ClassicIndexSchemaFactory 需要使用schema.xml配置文件,并且不允许在运行时对架构进行任何编程式更改。该schema.xml文件必须手动编辑,仅在加载集合时才加载。

    1. <span style="font-size:14px;"><schemaFactory class="ClassicIndexSchemaFactory"/></span>  

    1.3、两种模式的区别:

    1.3.1、两种模式下,schema文件的格式形式不同,默认的托管模式下的schema文件名字必须是managed-schema;而经典的schema.xml模式下schema文件名字必须是schema.xml。

    1.3.2、两种模式下,solrconfig.xml文件中<schemaFactory/>声明的方式也不同。

    2、两种模式之间的相互切换

    2.1、从经典的schema.xml模式切换到默认托管模式:

    只需要将solrconfig.xml文件中显示配置的<schemaFactory class="ClassicIndexSchemaFactory"/>删除或注释掉,然后重新启动solr即可。

    当solr启动的时候回检测是否存在managed-schema,如果存在,那么这个managed-schema文件就是将要被读取的文件;如果managed-schema文件不存在,那么solr就会将schema.xml文件中的内容读取并将内容吸入新建的managed-schema文件,然后将schema.xml文件重命名为schema.xml.bak。

    2.1、从默认的托管模式切换到经典的schema.xml模式:需要两步实现:

    第一步:将managed-schema文件重命名为schema.xml;

    第二步:在solrconfig.xml中显示的配置<schemaFactory class="ClassicIndexSchemaFactory"/>;

    然后重新启动solr即可。

    3、schema文件中各种标签的含义

    3.1、<schema name="default-config" version="1.6"></schema>:这是schema文件的根节点,类似于html文件的<html></html>,只是schema文件还有一些属性。

    3.2、<uniqueKey>id</uniqueKey>:指定某个字段是唯一的字段 。

    3.3、<fieldType ></fieldType>:定义字段类型。

    3.4、<field  name=" " type=" "/>:定义字段。

    3.5、<dynamicField name=" " type=" " indexed="true" stored="true"/>:定义动态字段。

    3.6、<copyField source=" " dest=" " />:复制字段。

     

  • 相关阅读:
    go装饰器
    python属性描述符和属性查找过程
    python property动态属性
    python中is 与 ==的区别
    python变量到底是什么
    python对象的可变性
    python sorted函数
    《Note --- UE4 --- Blueprint_Overview_HowTo》
    《Temporal AA , SMAA and MSAA》
    TODO
  • 原文地址:https://www.cnblogs.com/zjm-1/p/9172968.html
Copyright © 2011-2022 走看看