共计 2337 个字符,预计需要花费 6 分钟才能阅读完成。
摘要:在之前的 Solr 版本中(Solr5 之前),在创建 core 的时候,Solr 会自动创建好 schema.xml,但是在之后的版本中,新加入了动态更新 schema 功能,这个默认的 schema.xml 确找不到了,那么 managed-schema 与 schema.xml 是什么样的关系,一起来探究一番。
寻找缺失的 schema.xml
-
在 Solr 的配置文件里,有两个文件很重要,一个是
solrconfig.xml
,还有一个就是schema.xml
。
Solr6 创建完 core 以后,默认已经生成了solrconfig.xml
,但是却找不到schema.xml
。 -
在管理页面,可以看到,虽然 Schema 可以点击,但是内容是空的,只可以添加 Filed。
-
原来,在 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 相关教程见以下内容:
Solr3.6.1 在 Tomcat6 下的环境搭建 http://www.linuxidc.com/Linux/2013-01/77664.htm
基于 Tomcat 的 Solr3.5 集群部署 http://www.linuxidc.com/Linux/2012-12/75297.htm
在 Linux 上使用 Nginx 为 Solr 集群做负载均衡 http://www.linuxidc.com/Linux/2012-12/75257.htm
Linux 下安装使用 Solr http://www.linuxidc.com/Linux/2012-10/72029.htm
在 Ubuntu 12.04 LTS 上通过 Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm
Solr 实现 Low Level 查询解析(QParser)http://www.linuxidc.com/Linux/2012-05/59755.htm
基于 Solr 3.5 搭建搜索服务器 http://www.linuxidc.com/Linux/2012-05/59743.htm
Solr 3.5 开发应用教程 PDF 高清版 http://www.linuxidc.com/Linux/2013-10/91048.htm
Solr 4.0 部署实例教程 http://www.linuxidc.com/Linux/2013-10/91041.htm
Solr 的详细介绍:请点这里
Solr 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136111.htm