managed_schema

Managed_schema是在使用solr建立core时的配置(core连接配置和索引库),solr根据它确定如何对文档建立索引到索引库中,每个core在建立前都需要设计好managed_schema。本文就managed_schema包含什么?如何设计managed_schema做说明。

如何设计文档索引

在solr和lucene中,每个文档可以解析成一个document,document有field集合组成,field的形式可以为多种,比如filed可以为作者,标题,内容等,field也可以为时间,长度等,document是一系列描述全文的field的集合。Lucene便是将docement进行建立索引的java库,solr为使用lucene实现的一个服务程序,可以说solr是lucene的一个封装。

当我们有一系列documents时,我们想要对每个docement中需要建立索引的部分进行自定义设定,比如当我们有一篇论文,它可以分成<题目,作者,时间,关键字,地址,内容>这样的field集合,其中作者和关键字这样的field可以包含多个值,作者一般包含学生名字和导师名字。现在,我们想要对该片论文建立全文索引,我们希望可以通过某个field中的值能够搜索到它,比如题目,或者某个关键字,但我不希望通过某些field比如地址搜索到该论文,所以想要建立索引的第一个问题为:你希望哪些field可以用于检索?当检索到该文档后,我们希望看见该文档中的题目,地址,内容等属性,那么想要建立索引的第二个问题为:你希望哪些属性可以展示给大家看?同时某个field可能包含多个值,比如关键字,所以建立索引的第三个问题为:我想指定某个field为多值。

当你想要建立索引时,首先考虑上面三个问题,在solr中,这些问题都可以按照你的设计运行,那就是对managed_schema进行配置。如以下内容:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

本句中name指定field名;

type指定该field的内容的类型,需要与managed_schema后面的<fieldType name="string" class="solr.StrField" sortMissingLast="true" />进行对应;

indexed表明该属性是否进行检索,也就是是否需要建立索引,它的值域为{“true”,“false”}当值为true时则建立索引;

stored的值域也为{“true”,”false”},该选项确定该属性是否用于展示,当设置为”true”时,该field的值将写入索引库中,在检索时,该选项用于返回展示,如果为false则不存储该field并且不做展示。需要申明的是一个值可以同时检索和展示即indexed选项和stored选项可以同时为”true”。

Required值域为”true”时,每个上传到该索引库的文档都要求包含本field,如果需要建立的文档中并不包含该field则拒绝对其建立索引。

multiValued配置是否为多值选项,如果值为”true”则为多值,比如刚刚我们说的关键字。

 

managed-schema格式

managed-schema文档的格式如下:

<schema>
  <types>
  <fields>  
  <uniqueKey>
  <copyField>
</schema>
最常用的也就是我上边说过的types用来指定field数据类型,分词方式,检索等。fileds用于配置field的名字,filed类型,是否检索,是否存储,是否多值等信息。

 

posted on 2016-05-27 13:07  honeyqiong  阅读(1210)  评论(0编辑  收藏  举报

导航