Solr的Schema API(模式)

一、介绍

Solr中的每一个core/collection都拥有自己的schema(模式),在solr 5之前,solr使用schema.xml文件进行定义,早solr 5以后,solr支持通过api对core/collection进行模式的修改。因此在solr 5用户有两种模式方式:经典模式与manager-schema,两种模式。

二、解释

1、经典模式与manager-schema

(1)经典模式

经典模式下,用户只能通过schema.xml文件去定义FieldType、Field等,因此这种情况下需要特别的注意在定义模式小心出现漏定义的错误。因为solr5以后的版本默认使用manage-schema模式,因此如果想使用经典模式,则需要在solrconfig.xml文件中定义schemaFactory标签进行模式的定义:

<schemaFactory class="ClassicIndexSchemaFactory"/>

(2)manager-schema

manage-schema模式不支持用户通过修改manage-schema文件去进行FieldType、Field的修改(但实际上是可以manage-schema文件进行修改)。manage-schema提供一套schema api去创建、修改、删除FieldType、Field等。定义方式为:

<schemaFactory class="ManagedIndexSchemaFactory">
    <bool name="mutable">true</bool>
    <str name="managedSchemaResourceName">managed-schema</str>
  </schemaFactory>

nanagedSchemaResourceName属性定义了schema.xml文件的路径,这里使用的是相对路径,因此managed-schema文件跟solrconfig.xml文件在同一个目录中。


2、managed-schema模式下的Schema API

Schema API是一套REST风格的API,用户可以通过浏览器,或者使用某种语言中的HTTPClient
对象进行访问。

(1)定义新模式

HTTP Method:POST; Content-type:json,则定义新默认的Java代码为

public void addField() throws IOException
	{
		String urlStr="http://192.98.12.36: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();
	}


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值