Solr8.0速成系列 | Solr中的域(Filed)总结 04

版权声明:专注于技术分享,原创版权归 十年呵护所有,转载请标明原文链接,更多信息可关注 wwws.shinians.com 官网 https://blog.csdn.net/zzhuan_1/article/details/90208111

目录

 

开篇

域的新增、查看

其它介绍


开篇

schame

schame文件可以对索引库的数据类型进行定义,对字段是否进行索引、储存等进行设置,要针对核心单独进行配置。
schame的数据类型基本够用,如果不能满足需求,比如说对中文分词、拼音分词等,就可以自定义分词器。
Solr 7.5的schema配置文件名为managed-schema,路径为solr_home\server\solr\new_core\conf\managed-schema(D:\Program Files\solr-7.5.0\server\solr\new_core\conf\managed-schema)。
 

域可以理解为document的字段的定义,域是全文搜索的一个基础,所以我们需要好好掌握这个概念

Field类是文档索引期间很重要的类,控制着被索引的域值,下面先来看几种常用的域类型:

是否分词:

   分词的作用是为了索引
   需要分词: 文件名称, 文件内容
   不需要分词: 不需要索引的域不需要分词,还有就是分词后无意义的域不需要分词 比如: id, 身份证号

是否索引:
   索引的的目的是为了搜索.
   需要搜索的域就一定要创建索引,只有创建了索引才能被搜索出来
   不需要搜索的域可以不创建索引
   需要索引: 文件名称, 文件内容, id, 身份证号等
   不需要索引: 比如图片地址不需要创建索引, e:\\xxx.jpg,因为根据图片地址搜索无意义

是否存储:
   存储的目的是为了显示.
  是否存储看个人需要,存储就是将内容放入Document文档对象中保存出来,会额外占用磁盘空间, 如果搜索的时候需要马上显示出来可以放入document中也就是要存储,这样查询显示速度快, 如果不是马上立刻需要显示出来,则不需要存储,因为额外占用磁盘空间不划算.

域的新增、查看

域的使用

   我们在添加索引的时候,使用域必须是在配置文件中配置的,如果我们使用的索引在配置文件中不存在,将会报错,索引添加失败,此时如果我们的需求要求我们必须使用这个域名,则我们需要自己在配置文件添加这个域的定义

添加域的方法

如同第二篇中介绍,在管理页面添加即可(可参考篇章02)

<uniqueKey>id</uniqueKey>

查看相关域

Files->managed-schema 


 

其它介绍

动态域

   为了更好的满足我们在项目中的需求,在原有的配置文件中,还有一些域采取了通配符的模式定义,这些域被称为动态域,只要满足这些域的模式,即可使用

 <dynamicField name="*_dts" type="pdate" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_is" type="pint" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_ss" type="string" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_ls" type="plong" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_en" type="text_en" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_bs" type="boolean" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_fs" type="pfloat" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_ds" type="pdouble" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_dt" type="pdate" indexed="true" stored="true"/>
  <dynamicField name="*_i" type="pint" indexed="true" stored="true"/>

复制域

   复制域的目的是将多个域合并为一个域,这样我们按照多个条件查询的时候,可以值发送一个get请求就可以完成,如果我们定义了复制域,在我们保存数据的时候,我们只负责保存两个域,但是实际上在索引库中存储了三个域,复制域就是solr内部自动合并的,定格式如下:

自定义域类型(IK中文分词)

<!-- IKAnalyzer -->
	<fieldType name="text_ik" class="solr.TextField">
		<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>

 End

希望大家对域有个简单了解,后续实战我们都会用到

猜你喜欢

转载自blog.csdn.net/zzhuan_1/article/details/90208111