Solr中的DocumentFieldSchema

Posted 莫西里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr中的DocumentFieldSchema相关的知识,希望对你有一定的参考价值。

一、介绍

        solr是一套基于lucence开发的全文检索框架。在学习solr过程中,要充分掌握几个概念,方便开发者快速学习。solr自己提供了一套数据索引(index)和查询(search)的工具,用户可以通过solr提供的web界面进行相应的索引与查询操作,而在solr进行服务过程中,用户的数据都是以Document(文档)、Field(域)和模式(schema)的形式与solr服务进行交互。

二、详解

1 Documents

    Documents是solr用户与solr服务器进行交互的基本单元。solr将一个Document中的数据当做一个整体进行处理,因此用户在传递信息时都是以Document位单位进行传输,一次性可以传送一个或者多个Document单元,solr服务器会解析这些Document对象,来进行相关的处理。Document的主要格式为:

xml格式:

<doc>
<field name="id">000000002</field>
<field name="title">this is the test value 000000002</field>
</doc>

JSON格式:

"doc":"id":"0000000001","title":"this is the test value 000000001"

一个Document节点中主要包含的数据对象为Field(域)。solr服务器在接受到XML格式或者JSON格式的数据后对其进行解析,提取Field中的数据进行操作。

2 Field

   Solr中的数据单元。Solr所处理的数据(索引、更新等操作)都是存放在相应的Fied中的,如果把Document当做Java中的一个对象,一个Field则是就是一个成员属性。Field的主要格式为:

<field name="price" type="float" default="0.0" indexed="true" stored="true"/>

通过xml对象定义的方式在schema.xml文件中定义一个Field,在solr中,在经典模式的情况下,如果使用没有定义的field(域)进行索引或者更新,solr服务器会返回一个报错信息。

Field包含多种类型:field(定义完全的域)、copyField(复制域,可以将别域数据复制到该域中)、dynamicField(动态域,一种含有通配符的域)

Field中的type属性指定该域中的数据类型,该数据类型也是也和field定义在同一个文件中,叫做FieldType(域类型),定义的格式为:

<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>

3 schema(模式)

   Solr中所有的field与filedtype通过schema(模式)去定义,在Solr 5以后,Solr就采用了新的模式管理方式进行Field(域)的查看、生成、删除等操作。因为在solr 5以前,所有的Field都是需要提前在schemal.xml文件中提前定义好才能够使用在索引与更新服务中。而在新版本中为了解决用户对数据结构了解不足的情况,solr提供了一种manager schema的管理方式,用户可以通过Schema API去查看所有的模式信息(field、fieldtype、version、name),并且可以通过该API对Field、copyField、dynamicField、FileType等进行新增、删除、修改。


以上是关于Solr中的DocumentFieldSchema的主要内容,如果未能解决你的问题,请参考以下文章

(solr系列:四)将mysql数据库中的数据导入到solr中

Datastax Search / Solr中的分组和计数(*)

检索 Solr 查询中的特定字段?

solr中的一些常见错误

Solr 7.2.1中的Illegal group.format参数

处理Solr中的大量ID