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

最新文章

  1. mysql数据库开发常见问题及优化
  2. 【EasyUI】 日期格式化
  3. Spark相关下载
  4. Centos7更新firefox
  5. IOS第14天(2, Modal控制)
  6. JavaScript开发中的一些问题
  7. java 多线程——quartz 定时调度的例子
  8. Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合
  9. 配置sql server 2000以允许远程访问 及 连接中的四个最常见错误
  10. cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
  11. 关于如何使用Navicat(11.1.13) for MySQL如何创建存储过程
  12. 机房收费系统之uml图——初版
  13. web标准(复习)--4 纵向导航菜单及二级弹出菜单
  14. 将firebug安装在chrome浏览器上
  15. Java AOP - Aspectj
  16. 多尺度二维离散小波重构waverec2
  17. Sql CE 数据库编程
  18. Perl初试
  19. cookie记住浏览位置
  20. 【资源分享】云计算 CRM 等网上搜集资料

热门文章

  1. SSO单点登录统一身份认证系统
  2. 浅谈Web图像优化
  3. python random 的用法
  4. win32 API 笔记1
  5. [转帖]【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别
  6. &lt;&lt;C++ Primer&gt;&gt; 第 6 章 函数
  7. java-阿里云发送短信
  8. 求问:numpy里面索引时,采用整型数组和整型列表的区别!
  9. Python_4day
  10. leecode刷题(30)-- 二叉树的后序遍历