摘要: Solr的字段类型定义了Solr如何解析字段数据并将数据检索出来,了解Solr的字段类型定义有助于更好的配置与使用Solr。

字段类型的定义

字段类型的定义主要包含如下四个方面的信息:

  • 名称
  • 实现的类名
  • 如果field type 是TextField,则可以指定字段解析器
  • 字段类型属性

schema.xml中定义的字段类型

字段类型在schema.xml中指定,每一个字段类型被定义在fieldType标签之间,下面这个例子是一个text_general的字段类型:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

第一行包含了字段类型的名字“text_general”,是由类”solr.TextField”实现的,这个solr指的是org.apache.solr.schema或者org.apache.solr.analysis,也就是说solr.TextField指的是org.apache.solr.schema.TextField

字段类型属性

字段类型声明中,class已经基本确定了字段类型的行为,当然还可以通过一些属性参数来增加或改变某些行为。

<fieldType name="date" class="solr.TrieDateField"
sortMissingLast="true" omitNorms="true"/>

上面的这个date类型有两个额外的属性”sortMissinglast”和”omitNorms”。
所有的属性可以归结为一下三种形式:

  • 字段类型的class
  • 通用属性,支持所有的字段类型
  • 默认属性,一些字段类型的属性是特有的,可以通过指定来修改默认值

通用属性

属性 说明
name 用于定义field的”type”  
class 定义了使用何种方式处理该类型数据  
positionLncrementGap 对于多值字段,指定多值的间距 整数
autoGeneratePhraseQueries 适用于text字段,Solr是否自动生成短语查询 布尔值
docValuesFormat 对于一个字段类型使用定制的DocValuesFormat  
postingsFormat 对于一个字段类型使用定制的PostingsFormat  

默认属性

属性 说明 默认值
indexed 字段值是否用于查询 布尔值 true
stored 字段真实值是否可以被查询到 布尔值 true
docValues 字段值是否列式存储 布尔值 false
sortMissingFirst sortMissingLast 没有指定排序规则时,控制文档排序 布尔值 false
multiValues 字段是否多值 布尔值 false
omitNorms 是否忽略不适用该字段的规范 布尔值 true
omitTermFreqAndPositions 是否忽略词频、位置等 布尔值 true
omitpositions 类似omitTermFreqAndPositions但保留词频 布尔值 true
termVectors 是否保留term vectors 布尔值 false
termPositions 是否保留term position 布尔值 false
termOffsets 是否保留term offset 布尔值 false
termPayloads 是否保留term payload 布尔值 false
required 是否拒绝空值的字段 布尔值 false
useDocValuesAsStored 如果字段是docValues,设置为true将允许字段在fl参数匹配“*”时返回数据 布尔值 false

字段类型相似性

字段类型可以指定一个similarity,用于对全局的相似性文档进行评分。默认情况下,不指定相似性的话,使用的是BM25Similarity

Solr字段类型field type的定义的更多相关文章

  1. 1.4.2 solr字段类型--(1.4.2.1)字段类型定义和字段类型属性

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  2. 1.4.2 solr字段类型--(1.4.2.2)solr附带的字段类型

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  3. 1.4.2 solr字段类型--(1.4.2.7)字段属性使用案例

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  4. 1.4.2 solr字段类型--(1.4.2.6)使用外部文件和程序

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  5. 1.4.2 solr字段类型--(1.4.2.5)使用枚举字段

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  6. 1.4.2 solr字段类型--(1.4.2.4)使用Dates(日期)

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  7. 1.4.2 solr字段类型--(1.4.2.3)使用货币和汇率

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  8. Django文档——Model字段类型(Field Types)

    大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...

  9. django字段类型(Field types)介绍

    字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...

随机推荐

  1. mysql之 表空间传输

    说明:MySQL(5.6.6及以上),innodb_file_per_table开启. 1.1. 操作步骤: 0. 目标服务器创建相同表结构1. 目的服务器: ALTER TABLE t DISCAR ...

  2. js将foo-bar转为fooBar

    这是一道js的面试题,就是考察将普通面命转为小驼峰命名 <!DOCTYPE html> <html lang="en"> <head> < ...

  3. SqlServer :利用快捷键快速查看 字段说明查询及表结构 (小技巧)

    1.自定义4个常用的存储过程: sp_select :select * from sp_helpremark :查表的列,列的类型,备注(这里只查询有备注的列) sp_columns1 : 查表所有的 ...

  4. golang语言并发与并行——goroutine和channel的详细理解(一) 转发自https://blog.csdn.net/skh2015java/article/details/60330785

    如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人. Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据. ...

  5. android 逆向

    用到两个工具 :dex2jar和jd-gui 1,重命名ContactManager.apk为ContactManager.zip并解压得到文件classes.dex: 2,解压dex2jar-0.0 ...

  6. Thinkphp自定义标签

    1.定义TagLib目录和文件  TagLibSmarTop.class.php 2.配置文件 <?php return array( 'APP_AUTOLOAD_PATH'=>'@.Ta ...

  7. 【react】---Immutable的基本使用

    一.Immutable简介 Immutable Data 就是一旦创建,就不能再被更改的数据.对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象.Immut ...

  8. [蓝桥杯]ALGO-91.算法训练_Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,“Unclear”和“Nuclear”.“Rimon”和“MinO ...

  9. ALGO-17_蓝桥杯_算法训练_乘积最大(DP)

    问题描述 今年是国际数学联盟确定的“——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加. ...

  10. 我的Netty笔记

    pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...