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=" " />:复制字段。

     

  • 相关阅读:
    topcoder srm 445 div1
    topcoder srm 440 div1
    topcoder srm 435 div1
    topcoder srm 430 div1
    topcoder srm 400 div1
    topcoder srm 380 div1
    topcoder srm 370 div1
    topcoder srm 425 div1
    WKWebView强大的新特性
    Runtime那些事
  • 原文地址:https://www.cnblogs.com/zjm-1/p/9172968.html
Copyright © 2011-2022 走看看