【solr】schemaFactory配置相关schema.xml
schemaFactory配置相关schema.xml
关于schemaFactory的配置困扰我半天啦,下面来总结一下。
话说,好像是从5.0以后就已经没有schema.xml啦,这是由于Solr5以后增加了一个新的功能,提供schema API修改分词字段类型,通过schemaFactory来配置选择方式。
可以通过solr下面的conf文件夹中solrConfig.xml可以找到schemaFactory配置,在Solr5之前都是配置ClassicIndexSchemaFactory,
<schemaFactory class="ClassicIndexSchemaFactory"/>
Solr5以后包括Solr6,默认使用的是ManagedIndexSchemaFactory
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
这里我们就好好聊一聊他们的区别。
ClassicIndexSchemaFactory配置后,只能手动编辑schema.xml文件来修改FieldType、Field等等信息,因此这种情况下需要特别的注意在定义模式小心出现漏定义的错误。有人也称这种模式为经典模式。
ManagedIndexSchemaFactory配置被称为manage-schema模式,不支持用户通过修改manage-schema文件去进行FieldType、Field的修改(但实际上是可以manage-schema文件进行修改,并且重启Solr后可以生效)。manage-schema提供一套schema api去创建、修改、删除FieldType、Field等。
- 使用ManagedIndexSchemaFactory后,如果删除conf下面的manage-schema,系统会将conf下面的schema.xml重命名为schema.xml.bak,并重新生成一个manage-schema,此时manage-schema中的内容是schema.xml内容格式化得东东。
- managedSchemaResourceName属性定义了schema.xml文件的路径,这里使用的是相对路径,因此managed-schema文件跟solrconfig.xml文件在同一个目录中。
注意:本人就是没有太理解,一直认为manage-schema模式下,manage-schema中的配置不能修改,就是修改也能不生效的,其实不然,就算你修改了也可以生效,重启后和通过API修改效果一样。不过如果正的使用这种模式的话也没比较修改,通过web页面添加编辑更加方便。
下面介绍一下managed-schema模式下的Schema API
Schema API是一套REST风格的API,用户可以通过浏览器,或者使用某种语言中的HTTPClient对象进行访问。
HTTP Method:POST; Content-type:json,则定义新默认的Java代码为:
public void addField() throws IOException
{
String urlStr="http://192.98.219.12:8983/solr/techproducts/schema";
URL url=new URL(urlStr);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/json");
connection.setDoOutput(true);
connection.setDoInput(true);
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
JSONObject field=new JSONObject();
field.put("name", "test");
field.put("type", "text_general");
field.put("stored", true);
JSONObject addDoc=new JSONObject();
addDoc.put("add-field",field);
System.out.println(addDoc.toString());
writer.write(addDoc.toString());
writer.flush();
writer.close();
//
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
while(reader.ready())
{
System.out.println(reader.readLine());
}
reader.close();
}
【solr】schemaFactory配置相关schema.xml的更多相关文章
- solr 6.0 没有schema.xml未自动创建schema文件
solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...
- Solr入门之(5)配置文件schema.xml
该配置文件中的标签:<fileTypes>.<fields>.<uniqueKey>.<copyField> fieldType说明 标签types中定 ...
- 数据库中间件DBLE学习(二) 学习配置schema.xml
前言 一边有一个经常引诱我让我"娱乐至死"的视频,还有一个不停"鞭策"我让我快点学习的大BOSS.正是有这两种极端的爱才让我常常在自信中明白自己努力的方向.嗯, ...
- 认识配置文件schema.xml(managed-schema)
1.schema文件是在SolrConfig中的架构工厂定义,有两种定义模式: 1.1.默认的托管模式: solr默认使用的就是托管模式.也就是当在solrconfig.xml文件中没有显式声明< ...
- solr搜索引擎配置使用mongodb作为数据源
环境说明: 操作系统:由于是使用的docker直接拉取的镜像部署的,系统是LINUX环境 mongodb: 4.0.3 solr: 7.5.0 python: 3.5 配置mongodb 1.拉取mo ...
- 我与solr(五)--关于schema.xml中的相关配置的详解
先把文件的代码贴上来: <?xml version="1.0" encoding="UTF-8" ?> <!-- 版权说明... --> ...
- SOLR企业搜索平台 三 (schema.xml配置和solrj的使用)
标签:solrj 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://3961409.blog.51cto.com/3951409/8 ...
- solr的schema.xml配置属性解释
schema.xml做什么? SOLR加载数据,创建索引和数据时,核心数据结构的配置文件是schema.xml,该配置文件主要用于配置数据源,字段类型定义,搜索类型定义等.schema.xml的配置直 ...
- solr schema.xml文档节点配置
首先,讲解一下/usr/local/solr/collection1/conf/schema.xml的配置,此文档功能类似于配置索引数据库. Field:类似于数据库字段的属性(此文统一使用用“字段” ...
随机推荐
- naptime
naptime 有一个长度为n的序列\(a_i\),首尾相接组成了一个环,现在要在这个环上选出若干个区间,使区间长度之和恰好为b,然后忽略区间的顺时针开头元素,权值累加区间中所有的数字,问权值的最大值 ...
- 廖雪峰Java11多线程编程-3高级concurrent包-1ReentrantLock
线程同步: 是因为多线程读写竞争资源需要同步 Java语言提供了synchronized/wait/notify来实现同步 编写多线程同步很困难 所以Java提供了java.util.concurre ...
- 二分+2-sat——hdu3062
hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...
- Ubuntu GitHub操作——分支、合并与标签
分支 分支是用来将特性开发绝缘开来的.在你创建仓库的时候,master 是"默认的"分支.在其他分支上进行开发,完成后再将它们合并到主分支上. 创建一个叫做"featur ...
- Audio 标签的使用和自己封装一个强大的React音乐播放器
原文地址:https://www.dodoblog.cn/blog?id=5be84d5c70b2b617f27a4610 这篇文章主要介绍一下博客里的这个音乐播放器是怎么写的 为了更好的表达高深的东 ...
- EL bug 之 javax.el.PropertyNotFoundException: Property 'Sub_Token' not found on type com.sunmo.stPhone.bean.User
javax.el.PropertyNotFoundException: Property 'Sub_Token' not found on type com.sunmo.stPhone.bean.Us ...
- 菜鸟nginx源码剖析数据结构篇(二) 双向链表ngx_queue_t[转]
nginx源码剖析数据结构篇(二) 双向链表ngx_queue_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...
- python 模拟键盘输入
备忘录 import win32api import win32con win32api.keybd_event(17,0,0,0) #ctrl键位码是17 win32api.keybd_event( ...
- vue 模版组件用法
第一种 //首先,别忘了引入vue.js <div id="user_name_01"></div> <script src="../nod ...
- Apache Pig入门学习文档(一)
1,Pig的安装 (一)软件要求 (二)下载Pig (三)编译Pig 2,运行Pig (一)Pig的所有执行模式 (二)pig的交互式模式 (三)使用pig脚本 ...