列挙型フィールド

EnumFieldType を使用すると、値が閉じた集合であり、ソート順序は事前に決定されているが、アルファベット順でも数値順でもないフィールドを定義できます。これの例としては、重大度リストやリスク定義などがあります。

EnumField は非推奨になりました

EnumField は EnumFieldType に置き換えられました。以下のすべての構成例では 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" />

すべてのフィールドタイプに共通するnameclassに加えて、このタイプはさらに2つのパラメータを取ります。

enumsConfig

必須

デフォルト: なし

このフィールドタイプで使用したいフィールド値とその順序の<enum/>リストを含む設定ファイルの名前。ファイルへのパスが指定されていない場合、ファイルはコレクションのconfディレクトリにある必要があります。

enumName

必須

デフォルト: なし

このタイプに使用するenumsConfigファイル内の特定の列挙の名前。

フィールドタイプまたはフィールド定義のいずれかでdocValues="true"を指定する必要があります。

EnumFieldType 設定ファイルの定義

enumsConfigパラメータで指定されたファイルには、Solr スキーマで列挙を複数使用する場合、異なる名前を持つ複数の列挙値リストを含めることができます。

この例では、2つの値リストが定義されています。各リストは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/>内の既存の値の順序を変更したり、削除したりすることはできません。

ただし、新しい値を末尾に追加することはできます。