字段

字段在 架构 的 fields 元素中定义。一旦设置好字段类型,定义字段本身就很容易了。

示例字段定义

以下示例定义了一个名为 price 的字段,类型名为 float,默认值为 0.0indexedstored 属性显式设置为 true,而 float 字段类型上指定的任何其他属性都会被继承。

<field name="price" type="float" default="0.0" indexed="true" stored="true"/>

字段属性

字段定义可以具有以下属性

name

必需

默认值:无

字段的名称。字段名称应仅由字母数字或下划线字符组成,且不能以数字开头。目前尚未严格执行此规则,但其他字段名称不会得到所有组件的一流支持,并且不保证向后兼容性。以前导和后缀下划线开头的名称(例如 _version_)是保留的。

type

必需

默认值:无

此字段的 fieldType 名称。这将在 fieldType 定义的 name 属性中找到。每个字段都必须有一个 type

default

可选

默认值:无

当对文档编制索引时,如果该字段中没有值,则将自动添加的默认值。如果未指定此属性,则没有默认值。

可选字段类型覆盖属性

字段可以具有与字段类型相同的许多属性。下表中指定的属性如果在单个字段上指定,将覆盖在字段的 fieldType 上指定的该属性的任何显式值,或由基础 fieldType 实现提供的任何隐式默认属性值。下表摘自 字段类型定义和属性,其中有更多详细信息

属性 说明 隐式默认值

indexed

如果为 true,则字段的值可在查询中用于检索匹配的文档。

true

stored

如果为 true,则查询可检索字段的实际值。

true

docValues

如果为 true,则字段的值将放入面向列的 DocValues 结构中。

false

sortMissingFirstsortMissingLast

在排序字段不存在时控制文档的放置。

false

multiValued

如果为 true,则表示单个文档可能包含此字段类型的多个值。

false

uninvertible

如果为 true,则表示在查询时可以“反转”indexed="true" docValues="false" 字段,以构建大型内存数据结构,以代替 DocValues出于历史原因,默认为 true,但强烈建议用户将其设置为 false 以提高稳定性,并根据需要使用 docValues="true"

true

omitNorms

如果为 true,则忽略与此字段关联的规范(这会禁用字段的长度规范化,并节省一些内存)。对于所有原始(未分析)字段类型(例如 int、float、data、bool 和 string)默认为 true。只有全文字段或需要索引时提升的字段才需要规范。

*

omitTermFreqAndPositions

如果为 true,则从该字段的发布中忽略词频、位置和有效负载。对于不需要该信息的字段,这可以提升性能。它还减少了索引所需的存储空间。在具有此选项的字段上发出的依赖于位置的查询将静默失败,无法找到文档。对于所有非文本字段,此属性默认为 true。

*

omitPositions

类似于 omitTermFreqAndPositions,但保留词频信息。

*

termVectorstermPositionstermOffsetstermPayloads

这些选项指示 Solr 为每个文档维护完整的词向量,可以选择包括这些向量中每个词条出现的词条位置、偏移和有效负载信息。这些信息可用于加速高亮显示和其他辅助功能,但在索引大小方面会产生相当大的成本。对于 Solr 的典型用途,它们不是必需的。

false

必需

指示 Solr 拒绝添加任何不包含此字段值的文档。此属性的默认值为 false。

false

useDocValuesAsStored

如果字段已启用 DocValues,则将此设置为 true 将允许在 fl 参数 中匹配“*”时,将该字段作为已存储字段返回(即使它具有 stored=false)。

true

large

大字段始终延迟加载,并且仅当实际值 < 512KB 时才会占用文档缓存中的空间。此选项需要 stored="true"multiValued="false"。它适用于可能具有非常大值的字段,以便它们不会在内存中被缓存。

false