摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了,那么managed-schema与schema.xml是什么样的关系,一起来探究一番。

寻找缺失的schema.xml

  1. 在Solr的配置文件里,有两个文件很重要,一个是solrconfig.xml,还有一个就是schema.xml。 
     
    Solr6创建完core以后,默认已经生成了solrconfig.xml,但是却找不到schema.xml

  2. 在管理页面,可以看到,虽然Schema可以点击,但是内容是空的,只可以添加Filed。 

  3. 原来,在Solr5以后,这个schema文件已经不是默认生成好的了,它被取了一个名字managed-schema,并且没有后缀。乍一看,以为是打不开的文件,当然没有什么能难倒程序员的,用Notepad++打开,发现了熟悉的文字,这不就是之前的schema.xml文件吗? 

This is the Solr schema file. This file should be named “schema.xml” and 
should be in the conf directory under the solr home 
(i.e. ./solr/conf/schema.xml by default) 
or located where the classloader for the Solr webapp can find it.

  • 文档中还明确说明了,这个文档应该根据实际情况放到合适的位置,并把文件命名为schema.xml.这次我们就直接把文件名改成schema.xml就可以了,位置就是当前文件夹。 

动态更新schema.xml

在之前的版本中,我们是可以在solr的管理页面直接查看schema.xml文件的,但是不能对其做修改,如果手动更改schema.xml文件,需要重启服务器才能生效。在现在的版本中,是可以直接编辑这个文件的,在Schema选项下,有AddField、Add Dynamic Field、Add Copy Field三个基础功能。

如果你手动将managed-schema文件改为schema.xml,那么在重新启动以后,solr会将schema.xml改名为schema.xml.bak,并再次生成一个managed-schema文件。 
 
打开这个managed-schema文件,会发现这个文件不允许修改的。 

solr使用schema.xml还是managed-schema

solr6使用<schemaFactory/>来控制使用schema的方式,默认使用的是ManagedIndexSchemaFactory,但是在solrconfig.xml文件中,这个配置没有显示的指定出来,其实它相当于

 <schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
  • mutable 是否改变Schema数据,设置为false可以防止他人更改Schema
  • managedSchemaResourceName 可以指定Schema的名字,当然值不能是schema.xml

如果你已经熟悉了之前的配置方式,可以使用ClassicIndexSchemaFactory,只需要在solrconfig.xml文件中添加这样的配置<schemaFactory class="ClassicIndexSchemaFactory"/>即可,当然这就需要你必须配置一个schema.xml文件。

如果你在使用SolrCloud,上述的操作应该是在ZooKeeper中完成。

solr 6.0 没有schema.xml未自动创建schema文件的更多相关文章

  1. class_create(),device_create自动创建设备文件结点

    class_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代.相比devfs,udev有很多优 ...

  2. 工程管理之makefile与自动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...

  3. class_create(),device_create自动创建设备文件结点【转】

    本文参考来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhenwenxian/archive/2010/03/28/5424434.aspx 本文转自:http://ww ...

  4. linux下自动创建设备文件节点---class

    在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的 ...

  5. IDEA创建applicationContext.xml 无法自动提示,文件图标是文本类型

    问题:创建applicationContext.xml 的时候注册到file里边去了. 解决方法: 打开设置界面找到以下界面: 删除掉 Text 里边的 applicationContext.xml ...

  6. linux设备驱动----利用mdev(udev)自动创建设备文件节点

    1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...

  7. Solr4.0 如何配置使用UUID自动生成id值

    原文链接http://blog.csdn.net/keepthinking_/article/details/8501058#comments 最近学习了Lucene,随便也学习了Solr,Solr规 ...

  8. Solr5之Schema.xml详解

    schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即 Norms ,是否存储项向量等等. schema.xml 配置文件的根元素就是 sc ...

  9. solr5.5教程-solrconfig.xml,加载schema.xml

    布署完成后,接下来要更深入的研究solr的原理和使用. 首先进入testcore这个文件夹下面,发现这个core的conf里并没有schema.xml.那么数据格式是在哪里定义的呢? 打开 solr_ ...

随机推荐

  1. payload和formData有什么不同?

    最近做项目的时候,在通过post请求向服务端发送数据的时候,请求失败了.错误信息如下: 返回的400(bad request)错误,说明客户端这边发送的请求是有问题的. 和通过jquery中的ajax ...

  2. android 多进程 Binder AIDL Service

    本文參考http://blog.csdn.net/saintswordsman/article/details/5130947 android的多进程是通过Binder来实现的,一个类,继承了Bind ...

  3. win7下装ubuntu双系统后无法进入win7的解决方法

    本来电脑的系统是win7,然后用u盘装了ubuntu之后可能会出现开机没有引导界面而直接进入ubuntu系统的情况. 原因:没有设置gurb引导 解决方法:需要更新gurb来使ubuntu识别出win ...

  4. LoadRunner 比较字符串是否相等

    int strcmp ( const char *string1, const char *string2 );大小写敏感.int stricmp ( const char *string1, con ...

  5. HDU 2896 病毒侵袭 (AC自己主动机)

    pid=2896">http://acm.hdu.edu.cn/showproblem.php?pid=2896 病毒侵袭 Time Limit: 2000/1000 MS (Java ...

  6. Socketclient与服务端

    package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  7. Android5.0(lollipop)新特性介绍(一)

    今年6月的Google I/O大会上.Android L的初次见面我相信让会让非常多android粉丝有些小激动和小期待.当然作为开发人员的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本 ...

  8. UVA 1400 1400 - &quot;Ray, Pass me the dishes!&quot;(线段树)

    UVA 1400 - "Ray, Pass me the dishes!" option=com_onlinejudge&Itemid=8&page=show_pr ...

  9. sizeof、strlen

    一.sizeof sizeof(...)是运算符,sizeof操作符的结果类型是size_t.它在头文件里typedef为unsigned int类型.是以字节为单位进行计数的.所以位域成员不 能用s ...

  10. Java小白手记2:一些名词解释

    看到<Java 征途:行者的地图> ,这是一篇有关java学习路径文章.对我等Java小白有指引作用.里面提到了一些基本的名词术语,有些我知道,有些不知道,再补上一些自己曾觉得模糊的,记录 ...