solr是一套基于lucence

一、介绍

        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格式:

[html]  view plain  copy
  1. <doc>  
  2. <field name="id">000000002</field>  
  3. <field name="title">this is the test value 000000002</field>  
  4. </doc>  

JSON格式:

[html]  view plain  copy
  1. "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的主要格式为:

[html]  view plain  copy
  1. <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(域类型),定义的格式为:

[html]  view plain  copy
  1. <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等进行新增、删除、修改。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值