概要
ここでは、ユーザーのタグを管理する画面について説明します。
タグは、ログインしたユーザーが検索結果のドキュメントに付ける目印です。タグはユーザーごとに管理され、タグを作成したユーザーがその所有者です。同じ名前のタグでも、所有者が違えば別のタグです。タグは管理者が URL のパターンで定義する ラベル とは別のもので、ユーザーが自分で作成し、個々のドキュメントに付けます。
タグ機能はデフォルトで無効です。利用するには fess_config.properties で user.tag.enabled=true を設定します。有効にすると、同梱の bootstrap テーマでは、ログインしたユーザーが検索結果にタグを付けたり外したりでき、タグのファセットで絞り込めます。「マイタグ」では自分のタグの名前の変更、共有の切り替え、削除ができます。他のユーザーの共有タグには「共有:」が付いて表示されます。ユーザー向けの API と設定については タグAPI を参照してください。
この画面では、管理者がすべてのユーザーのタグを一覧、作成、編集、削除できます。
管理方法
表示方法
下図のタグの一覧ページを開くには、左メニューの [クローラー > タグ] をクリックします。閲覧には admin-tagtype または admin-tagtype-view のロールが必要で、作成・編集・削除には admin-tagtype が必要です。
一覧には各タグの名前と所有者が、表示順序、名前、所有者の順に表示されます。名前と所有者で検索でき、どちらも入力した文字列を含むタグに一致します。
編集するには名前をクリックします。
設定の作成
タグの作成ページを開くには新規作成ボタンをクリックします。
設定項目
名前
タグ名を指定します。名前は NFKC で正規化され、連続する空白は 1 つにまとめられ、前後の空白は取り除かれます。正規化後の長さは 1 〜 user.tag.name.max.length (デフォルト: 50)文字で、制御文字や書式文字を含む名前は指定できません。
所有者
タグを所有するユーザーのログインユーザー ID を指定します。所有者と名前の組み合わせはタグごとに一意で、同じ所有者が同じ名前のタグを 2 つ持つことはできません(仮想ホストが違っても同じです)。
所有者を変更すると、パーミッションに含まれる元の所有者のユーザーのパーミッションは、新しい所有者のものに置き換わります。
パス
タグを付けるドキュメントの URL を 1 行に 1 つ指定します。インデックスのドキュメントの url フィールドとの完全一致で照合され、正規表現は使えません。指定できる URL は最大 user.tag.max.paths (デフォルト: 10000)個です。
パーミッション
タグを見られるユーザー、グループ、ロールを指定します。指定方法はラベルと同じで、ユーザー単位は {user}ユーザー名、グループ単位は {group}グループ名、ロール単位は {role}ロール名で指定します。空のまま保存すると、所有者だけが見られるタグになります。
所有者は、パーミッションに関係なく常に自分のタグを見られます。ログインしていないユーザーには、パーミッションに関係なくタグは見えません。
仮想ホスト
タグを表示する仮想ホストの仮想ホスト名を指定します。仮想ホスト名は、 全般 の「仮想ホスト」に Host:abc.example.com=host1 と設定した場合の = の右側(この例では host1 )で、ホスト名ではありません。 www.example.com:8080 のようにポート番号を含むホスト名を指定しても保存できますが、どの仮想ホストにも一致しないため、タグは表示されません。ユーザーがタグを作成したときは、そのときアクセスした仮想ホストが入ります。仮想ホストでアクセスされた検索画面では、この欄にその仮想ホスト名が指定されたタグだけが見えます。どの仮想ホストにも一致しないアクセスでは、この欄に関係なくタグが見えます。再クロール、 tag_updater ジョブの実行、ドキュメントへのタグの追加では、仮想ホストを持つタグは、同じ仮想ホストを持つクロール設定のドキュメントにだけ付きます。詳しくは 設定ガイドの仮想ホスト を参照してください。
表示順序
タグの表示順を指定します。
設定の削除
一覧ページの名前をクリックし、削除ボタンをクリックすると確認画面が表示されます。削除ボタンを押すとタグが削除され、ドキュメントからもタグの値が取り除かれます。
共有
ユーザーがタグを「共有」にすると、パーミッションに role.search.guest.permissions の値(デフォルト: {role}guest )が追加されます。タグが見えるかどうかは、ログインしたユーザーのロールにこの値を加えて判定されるため、共有タグはログインしたすべてのユーザーに見え、絞り込みに使えます。共有を解除すると、この値だけが取り除かれます。
管理者はこの画面でパーミッションにグループやロールを追加して、特定のユーザーだけにタグを見せることもできます。ただし、タグを変更できるのは所有者と管理者だけです。他のユーザーは、見えるタグで表示や絞り込みをするだけです。
ドキュメントへの反映
ドキュメントのタグは、インデックスの tag フィールドに base64url(名前):base64url(所有者) の形式で格納されます。
タグの作成・編集・削除や、ユーザーによるタグの付け外しは、すぐにタグの情報(
fess_config.tag_typeインデックス)に保存されます。ドキュメントの更新は、変更をメモリ上のキューに入れ、1 分ごとに実行される「Log Aggregator」(log_aggregator)ジョブがまとめて行います。そのため、検索結果に反映されるまで最大 1 分ほどかかります。この画面でパスを変更すると、追加・削除した URL の分だけドキュメントが更新されます。名前や所有者を変更すると、古い値を持つドキュメントが新しい値に置き換わります。
クロールやデータストアでドキュメントをインデックスするときは、タグのパスと照合して
tagフィールドを設定します。そのため、再クロールしてもタグは失われません。「Tag Updater」(
tag_updater)ジョブは、すべてのドキュメントのtagフィールドをタグの情報から作り直します。スケジュールは設定されていないため、必要なときにスケジューラから手動で実行します。
運用上の注意
Log Aggregator はすべてのノードで実行してください。 キューは JVM ごとにあり、そのノードの Log Aggregator だけが処理します。
log_aggregatorジョブの対象(target)はデフォルトのallのままにしてください。特定のノードに限定すると、他のノードで受け付けた変更がドキュメントに反映されません。次の場合は Tag Updater を実行してください。 キューはメモリ上にあるため、反映前の変更は Fess の再起動で失われます。
user.tag.enabled=falseの間は、タグの変更がドキュメントに反映されず、再クロールするとドキュメントのtagフィールドは消えます。バックアップから復元した後も、ドキュメントのタグを作り直す必要があります。また、キューがuser.tag.queue.max.size(デフォルト: 10000)を超えると、超えた変更は破棄され WARN ログが出力されます。いずれの場合も、tag_updaterを実行するとドキュメントのタグが作り直されます。仮想ホストを変更したら Tag Updater を実行してください。 タグの仮想ホストを変更しても、インデックス済みのドキュメントの
tagフィールドは、tag_updaterジョブを実行するか、ドキュメントを再クロールするまで変更前のままです。また、仮想ホストを持たないタグは、仮想ホストに一致するアクセスでは表示されません(一致しないアクセスでは表示されます)。仮想ホストで使うタグは、この画面で仮想ホストを指定するか、不要なら削除してください。API での動作は タグAPI を参照してください。タグの所有者はログインユーザー ID です。 ユーザー ID が変わると、そのユーザーのタグは元の ID に残ったままになります。SAML では NameID が永続的(persistent)な形式である必要があります。Entra ID では UPN、LDAP ではログイン時に入力した大文字小文字のままのユーザー名が所有者になります。ユーザーを削除しても、そのユーザーのタグは残るため、不要なタグはこの画面で削除してください。
既存のインデックスでも利用できます。 起動時に、ドキュメントのインデックスに
tagフィールドのマッピングがなければ、keyword型で追加されます。既存のフィールドは変更されません。タグの情報は
fess_config.tag_typeインデックスに保存されます。バックアップのfess_config.bulkには含まれますが、fess_basic_config.bulkには含まれません。