Solr初探(2)——域管理

在上一节中,我们已经成功搭建了Solr后台,并且在后台中新建了一个核(core),本节将介绍Solr配置域。

我们在后台系统中选择core1,点击Documents,在里面添加一个Document(文档),内容如下:

{"id":"1","name":"jitwxs"}

点击Submit按钮执行成功:

然后选择Query,查询条件设为*.*,即查询所有,就可以看见我们刚刚插入的Doucment

Lucene初探——基于Lucene 6.6.2这篇文章中,我们已经知道了一个Document中可以有多个域(field),这里的idname就是这个文档的域。

这里写图片描述

我们打开core1的conf文件夹,其中有两个重要的配置文件需要我们掌握,一个是managed-schema,一个是solrconfig.xml,其中是managed-schema就是Solr对域的配置文件。


field和fieldType

打开managed-schema文件,首先介绍下field标签,这里是Solr帮我们预设好的域,如图示:

属性名含义
name域的名字
type域的类型
indexed是否索引
stored是否存储
required是否必须
multiValued是否允许多值(多个数值,数组一样)

域的类型Solr也为我们定义好了,部分如下:

我们发现,之前我们添加的域filed和域name都是Solr定义过的,且idrequire的,因此我们后面每次添加Document都必须包含id域

值得注意的是,域必须得在该配置文件中配置过后,才能够使用,否则无法使用!!!


dynamicField

如果想添加一个域叫abcdefg,那么需要在配置文件中添加一行:

<field name="abcdefg" ... />

但是每次修改配置文件都需要重启Solr服务,有没有更方便的方法呢?其实有的,Solr贴心的帮我们想好了自定义Filed问题,其中有一个dynamicField标签,列举其中一部分如下:

我们发现域名是正则表达式的形式,因此只要我们的域匹配了正则表达式,就无需自己定义,比如将abcdefg修改为abcdefg_s就匹配了*_s的域,这样就可以不用自己定义了。


copyField

假设我们有一堆文章,我们想要搜索作者包含jitwxs或者描述中包含jitwxs的文章,但是作者信息存在author域中,描述信息存在description域中。难道我们要在两个域中分别查一次吗,当然不是,这就牵扯到了copyField

如图所示,配置文件中定义了一堆copyField,其中就有authordescription,我们发现这两个域的dest属性均为text

当我们修改author域或者description域的时候,因为配置了copyField,Solr会自动将内容拷贝dest的目标域,即text域。当我们查询的时候,就不会去查询author域或者description域,而是直接查询text域。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值