• Solr字段类型field type的定义


    摘要: 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

  • 相关阅读:
    InterLockedIncrement and InterLockedDecrement函数原理
    矩阵文件书写的简洁代码
    注册自定义URL协议(zhuan)
    求整数的位数
    WinExec unicode 处理
    C++中如何获取对象的名字(变量名,注意不是类名)
    计算所与北大往事回顾
    不尚贤在人事管理中的作用
    寻找适合自己的无资金创业之路
    诺基亚:用薪酬激励员工
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/10372344.html
Copyright © 2020-2023  润新知