Solr 包含的字段类型

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

描述

BBoxField

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

BinaryField

二进制数据。

BoolField

包含 true 或 false。第一个字符为 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位有符号整数)。此类使用基于“维度点”的数据结构对整数值进行编码,这种结构允许非常高效地搜索特定值或值范围。对于单值字段,必须使用 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 属性覆盖。有关详细信息,请参阅排序参数讨论

SpatialRecursivePrefixTreeFieldType

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

StrField

字符串(UTF-8 编码的字符串或 Unicode)。索引的 indexed="true" 字符串用于小字段,进行任何标记化或分析。它们有一个略小于 32K 的硬限制。非索引的 indexed="false" 和非 DocValues 的 docValues="false" 字符串适合存储大字符串。

TextField

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

UUIDField

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

注意:当使用 SolrCloud 时,对于大多数用户来说,将 UUIDField 实例配置为 NEW 的默认值是不可取的(如果 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 字段类型。