枚举字段

EnumFieldType 允许定义一个字段,其值是一个封闭集合,并且排序顺序是预先确定的,但不是按字母顺序或数字顺序排列。这方面的示例是严重性列表或风险定义。

EnumField 已被弃用

EnumField 已被弃用,改为使用 EnumFieldType;以下所有配置示例均使用 EnumFieldType。

在模式中定义 EnumFieldType

EnumFieldType 类型定义非常简单,如下例中定义了“priorityLevel”和“riskLevel”枚举的字段类型

<fieldType name="priorityLevel" class="solr.EnumFieldType" enumsConfig="enumsConfig.xml" enumName="priority"/>
<fieldType name="riskLevel"     class="solr.EnumFieldType" enumsConfig="enumsConfig.xml" enumName="risk" />

除了所有字段类型通用的 nameclass 之外,此类型还接受两个额外的参数

enumsConfig

必需

默认值:无

包含 <enum/> 字段值及其顺序的配置文件的名称,您希望将其用于此字段类型。如果未指定文件的路径,则该文件应位于集合的 conf 目录中。

enumName

必需

默认值:无

要在 enumsConfig 文件中使用的此类型的特定枚举的名称。

请注意,必须在字段类型或字段定义中指定 docValues="true"

定义 EnumFieldType 配置文件

如果您的 Solr 模式中有多个枚举用途,则使用 enumsConfig 参数命名的文件可以包含具有不同名称的多个枚举值列表。

在此示例中,定义了两个值列表。每个列表都在 enum 开闭标签之间

<?xml version="1.0" ?>
<enumsConfig>
  <enum name="priority">
    <value>Not Available</value>
    <value>Low</value>
    <value>Medium</value>
    <value>High</value>
    <value>Urgent</value>
  </enum>
  <enum name="risk">
    <value>Unknown</value>
    <value>Very Low</value>
    <value>Low</value>
    <value>Medium</value>
    <value>High</value>
    <value>Critical</value>
  </enum>
</enumsConfig>
更改值

您不能更改 <enum/> 中现有值的顺序或删除现有值,而无需重新索引。

但是,您可以将新值添加到末尾。