用户标签

概述

本节介绍管理用户的用户标签的界面。

用户标签是已登录的用户添加到搜索结果中文档上的标记。用户标签按用户管理,创建用户标签的用户是其所有者。即使名称相同,所有者不同的用户标签也是不同的用户标签。用户标签与管理员通过 URL 模式定义的 标签 不同,由用户自己创建并添加到各个文档上。

用户标签功能默认禁用。要使用此功能,请在 fess_config.properties 中设置 user.tag.enabled=true 。启用后,在内置的 bootstrap 主题中,已登录的用户可以为搜索结果添加或移除用户标签,并通过用户标签的分面进行筛选。在“我的标签”中可以重命名、共享和删除自己的用户标签。其他用户的共享用户标签会带有“共享:”前缀显示。关于面向用户的 API 和设置,请参阅 用户标签 API 。

在此界面中,管理员可以列出、创建、编辑和删除所有用户的用户标签。

管理方法

显示方法

要打开用户标签列表页面,请点击左侧菜单中的 [爬虫 > 用户标签]。查看需要 admin-tagtype 或 admin-tagtype-view 角色,创建、编辑和删除需要 admin-tagtype 角色。

列表按排序顺序、名称、所有者的顺序显示每个用户标签的名称和所有者。可以按名称和所有者搜索,两者都匹配包含所输入字符串的用户标签。

点击名称进行编辑。

创建配置

要打开用户标签创建页面,请点击新建按钮。

配置项

名称

指定用户标签名称。名称会经过 NFKC 规范化,连续的空白合并为一个空格,并去除首尾的空白。规范化后的长度必须为 1 ~ user.tag.name.max.length (默认:50)个字符,不能包含控制字符或格式字符。

所有者

指定拥有该用户标签的用户的登录用户 ID。所有者和名称的组合在用户标签中是唯一的,同一所有者不能拥有两个同名的用户标签(即使虚拟主机不同也是如此)。

更改所有者后,权限中原所有者的用户权限会替换为新所有者的用户权限。

路径

逐行指定要添加用户标签的文档的 URL。与索引中文档的 url 字段进行完全一致的比对,不使用正则表达式。最多可以指定 user.tag.max.paths (默认:10000)个 URL。

权限

指定可以查看该用户标签的用户、组和角色。指定方法与标签相同:按用户指定为 {user}用户名,按组指定为 {group}组名,按角色指定为 {role}角色名。留空保存时,只有所有者可以查看该用户标签。

无论权限如何,所有者始终可以看到自己的用户标签。无论权限如何,未登录的用户都看不到用户标签。

虚拟主机

指定显示该用户标签的虚拟主机的虚拟主机名。虚拟主机名是在 常规 的”虚拟主机”中设置 Host:abc.example.com=host1 时 = 右侧的部分(此例中为 host1 ),而不是主机名。指定 www.example.com:8080 这样带端口号的主机名虽然可以保存,但不会匹配任何虚拟主机,因此该用户标签不会显示。用户创建用户标签时,会填入当时访问的虚拟主机。通过虚拟主机访问的检索界面中,只显示在此项中指定了该虚拟主机名的用户标签。在不匹配任何虚拟主机的访问中,无论此项如何,都会显示用户标签。重新爬取、运行 tag_updater 作业以及给文档添加用户标签时,带虚拟主机的用户标签只会添加到设置了相同虚拟主机的爬取配置的文档上。详细信息请参阅 配置指南的虚拟主机 。

排序顺序

指定用户标签的排序顺序。

删除配置

点击列表页面中的名称,然后点击删除按钮,将显示确认画面。点击删除按钮将删除该用户标签,并从文档中移除其值。

共享

用户将用户标签设为“共享”后, role.search.guest.permissions 的值(默认: {role}guest )会被添加到其权限中。判断用户标签是否可见时,会在已登录用户的角色上加上这些值,因此共享的用户标签对所有已登录的用户可见,并可用于筛选。取消共享时只移除这些值。

管理员也可以在此界面中为权限添加组或角色,使用户标签只对特定用户可见。但只有所有者和管理员可以更改用户标签,其他用户只能用可见的用户标签进行显示和筛选。

反映到文档

文档的用户标签以 base64url(名称):base64url(所有者) 的格式存储在索引的 tag 字段中。

  • 用户标签的创建、编辑、删除以及用户添加和移除用户标签的操作,会立即保存到用户标签信息( fess_config.tag_type 索引)中。文档的更新则是先将更改放入内存中的队列,再由每分钟运行一次的“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 中。