Solr使用枚举字段

2018-11-10 16:55 更新

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

注意:EnumField 已被弃用;EnumField 已被弃用,以支持 EnumFieldType;下面的所有配置示例都使用EnumFieldType。

在schema.xml中定义一个EnumFieldType

EnumFieldType 类型的定义非常简单,就像在本例中定义 “priorityLevel” 和 “riskLevel” 枚举字段类型一样:

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

除了所有字段类型所共有的 name 和 class,这个类型还需要两个额外的参数:

enumsConfig

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

enumName

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

请注意,docValues="true" 必须在 EnumFieldType 字段类型或字段说明中指定。

定义 EnumFieldType 配置文件

如果在您的 Solr 架构中有多个用于枚举的使用,则使用 enumsConfig 参数命名的文件可以包含多个具有不同名称的枚举值列表。
在此示例中,定义了两个值列表。每个列表在枚举开始和结束标签之间:

<?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>

Tip:更改值:您无法在 <enum/> 没有重新索引的情况下更改顺序或删除现有值。但是,您可以将新值添加到末尾。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号