Solr 包含的字段类型

下表列出了 Solr 中可用且推荐的字段类型。下面的页面列出了所有从旧版 Solr 迁移过来的已弃用类型。该 org.apache.solr.schema 包含此表中列出的所有类。

描述

BBoxField

为每个文档字段索引一个矩形(边界框),并支持通过边界框进行搜索。有关更多信息,请参见 空间搜索 部分。

BinaryField

二进制数据。

BoolField

包含真或假。第一个字符为 1tT 的值被解释为 true。第一个字符中的任何其他值都被解释为 false

CollationField

支持 Unicode 排序以进行排序和范围查询。如果您可以使用 ICU4J,则 ICUCollationField 是更好的选择。有关更多信息,请参见 Unicode 排序 部分。

CurrencyFieldType

支持货币和汇率。有关更多信息,请参见 货币和汇率 部分。

DateRangeField

支持索引日期范围,以包括时间点日期实例(单毫秒持续时间)。有关使用此字段类型的更多详细信息,请参见 日期格式和日期数学 部分。即使只是为了日期实例,也请考虑使用此字段类型,尤其是在查询通常落在 UTC 年/月/日/时等边界上的情况下。

DenseVectorField

支持索引浮点值密集向量。有关更多信息,请参见 密集向量搜索 部分。

DatePointField

日期字段。表示具有毫秒精度的某个时间点,使用基于“维度点”的数据结构进行编码,该结构允许对特定值或值范围进行非常有效的搜索。有关支持语法的更多详细信息,请参见 日期格式和日期数学 部分。对于单值字段,必须使用 docValues="true" 来启用排序。

DoublePointField

双精度字段(64 位 IEEE 浮点数)。此类使用基于“维度点”的数据结构对双精度值进行编码,该结构允许对特定值或值范围进行非常有效的搜索。对于单值字段,必须使用 docValues="true" 来启用排序。

ExternalFileField

从磁盘上的文件提取值。有关更多信息,请参见 外部文件和进程 部分。

EnumFieldType

允许定义一组枚举值,这些值可能无法通过字母顺序或数字顺序轻松排序(例如,严重性列表)。此字段类型采用配置文件,该文件列出了字段值的正确顺序。有关更多信息,请参见 枚举字段 部分。

FloatPointField

浮点数字段(32 位 IEEE 浮点数)。此类使用基于“维度点”的数据结构对浮点数进行编码,该结构允许对特定值或值范围进行非常有效的搜索。对于单值字段,必须使用 docValues="true" 来启用排序。

ICUCollationField

支持 Unicode 排序以进行排序和范围查询。有关更多信息,请参见 Unicode 排序 部分。

IntPointField

整数字段(32 位有符号整数)。此类使用基于“维度点”的数据结构对 int 值进行编码,该结构允许对特定值或值范围进行非常有效的搜索。对于单值字段,必须使用 docValues="true" 来启用排序。

LatLonPointSpatialField

经纬度坐标对;可能包含多个值,表示多个点。通常以“纬度,经度”的顺序用逗号分隔。有关更多信息,请参见空间搜索部分。

LongPointField

长整型字段(64 位有符号整数)。此类使用基于“维度点”的数据结构对 foo 值进行编码,该结构允许对特定值或值范围进行非常有效的搜索。对于单值字段,必须使用docValues="true"来启用排序。

NestPathField

专门的字段类型,在使用嵌套文档时存储增强信息。

PointType

单值 n 维点。它既用于对经纬度的空间数据进行排序,也用于一些更罕见的使用场景。(注意:这与基于“点”的数字字段无关)。有关更多信息,请参见空间搜索

PreAnalyzedField

提供了一种将序列化令牌流发送到 Solr 的方法,可以选择使用字段的独立存储值,并将此信息存储和索引,而无需任何额外的文本处理。

PreAnalyzedField 的配置和用法在PreAnalyzedField 类型部分有说明。

RandomSortField

不包含值。对该字段类型进行排序的查询将以随机顺序返回结果。使用动态字段来使用此功能。

RankField

可用于存储评分因子以改进文档排名。与RankQParserPlugin结合使用。

RptWithGeometrySpatialField

SpatialRecursivePrefixTreeFieldType的派生类,它还存储原始几何图形。有关更多信息以及与地理空间结果转换器的使用,请参见空间搜索

SortableTextField

TextField 的一个专门版本,它允许(并默认)docValues="true",以便对原始字符串的前 1024 个字符进行排序,然后再进行分析。用于排序的字符数可以通过maxCharsForDocValues属性覆盖。有关详细信息,请参见sort 参数讨论

SpatialRecursivePrefixTreeFieldType

(简称 RPT) 接受经度、纬度字符串或 WKT 格式的其他形状。有关更多信息,请参见空间搜索

StrField

字符串(UTF-8 编码字符串或 Unicode)。字符串适用于小型字段,并且不会以任何方式进行分词或分析。它们有一个略小于 32K 的硬性限制。

TextField

文本,通常是多个单词或令牌。在正常使用情况下,只有 TextField 或 SortableTextField 类型的字段才会指定分析器

UUIDField

通用唯一标识符 (UUID)。传入一个值为NEW的值,Solr 将创建一个新的 UUID。

注意:当使用 SolrCloud 时,不建议为大多数用户配置具有NEW默认值的 UUIDField 实例(如果 UUID 值被配置为唯一键字段,则不可能),因为结果将是每个文档的每个副本都将获得一个唯一的 UUID 值。建议改为使用UUIDUpdateProcessorFactory在添加文档时生成 UUID 值。

已弃用的字段类型

所有 Trie* 数字和日期字段类型都已弃用,取而代之的是 *Point 字段类型。Point 字段类型在范围查询方面更出色(速度、内存、磁盘),但是简单的 field:value 查询的性能比 Trie 差。要么接受这一点,要么继续使用 Trie 字段。此缺点可能会在将来的版本中得到解决。
描述

CurrencyField

使用 CurrencyFieldType 代替。

EnumField

使用 EnumFieldType 代替。

TrieDateField

使用 DatePointField 代替。

TrieDoubleField

使用 DoublePointField 代替。

TrieFloatField

使用 FloatPointField 代替。

TrieIntField

使用 IntPointField 代替。

TrieLongField

使用 LongPointField 代替。

TrieField

此字段采用type参数来定义要使用的 Trie* 字段的特定类;使用适当的 Point 字段类型代替。