前言
在许多企业中,使用云存储已经成为常态。 然而,不同部门和用途使用不同云存储的情况也并不少见。 “那个文件是在 Google Drive 上,还是在 SharePoint 上,又或者在 Box 上”——这样的困扰会降低工作效率。
本文将介绍如何通过 Fess 整合多个云存储,构建一个从单一搜索框即可跨平台搜索所有云端文件的环境。
目标读者
使用多个云存储的组织管理员
对云存储搜索存在困扰的人员
了解 OAuth 认证基本概念的人员
场景
某企业使用了以下云存储服务。
| 服务 | 使用部门 | 主要用途 |
|---|---|---|
| Google Drive | 销售部、市场部 | 提案书、报告书、电子表格 |
| SharePoint Online | 全公司通用 | 公司内部门户、共享文档 |
| Box | 法务部、财务部 | 合同、发票、机密文档 |
云存储连接准备
安装数据存储插件
云存储的爬取需要使用以下插件。
fess-ds-gsuite: Google Drive / Google Workspace 的爬取fess-ds-microsoft365: SharePoint Online / OneDrive 的爬取fess-ds-box: Box 的爬取
从管理界面的 [系统] > [插件] 进行安装。
OAuth 认证设置
访问云存储的 API 需要进行 OAuth 认证设置。 在各服务的管理控制台中注册应用程序,获取客户端 ID 和密钥。
通用步骤
在各服务的管理控制台中注册应用程序
设置所需的 API 作用域(权限)(只读权限即可)
获取客户端 ID 和客户端密钥
在 Fess 的数据存储设置中配置这些信息
各服务的设置
Google Drive 的设置
将 Google Drive 的文件设为搜索对象。
在 Google Cloud Console 中的准备工作
在 Google Cloud Console 中创建项目
启用 Google Drive API
创建服务账号并下载 JSON 密钥文件
将服务账号添加到目标云端硬盘或文件夹的共享设置中
在 Fess 中的设置
[爬虫] > [数据存储] > [新建]
处理器名称:选择 GoogleDriveDataStore
设置参数和脚本
标签:设置为
google-drive
参数设置示例
private_key=-----BEGIN RSA PRIVATE KEY-----\nMIIE...\n-----END RSA PRIVATE KEY-----
private_key_id=your-private-key-id
client_email=fess-crawler@your-project.iam.gserviceaccount.com
supported_mimetypes=.*
include_pattern=
exclude_pattern=
脚本设置示例
url=url
title=name
content=contents
mimetype=mimetype
content_length=size
last_modified=modified_time
从服务账号的 JSON 密钥文件中获取 private_key、private_key_id、client_email 的值并进行设置。Google 文档、电子表格、幻灯片等 Google 专有格式也可以作为文本进行提取和搜索。
SharePoint Online 的设置
将 SharePoint Online 的文档库设为搜索对象。
在 Entra ID(Azure AD)中的准备工作
在 Entra ID 中注册应用程序
设置 Microsoft Graph API 的权限(如 Sites.Read.All 等)
创建客户端密钥或证书
在 Fess 中的设置
[爬虫] > [数据存储] > [新建]
处理器名称:选择 SharePointDocLibDataStore(适用于文档库。根据用途还可以使用 SharePointListDataStore、SharePointPageDataStore、OneDriveDataStore 等)
设置参数和脚本
标签:设置为
sharepoint
参数设置示例
tenant=your-tenant-id
client_id=your-client-id
client_secret=your-client-secret
site_id=your-site-id
脚本设置示例
url=url
title=name
content=content
last_modified=modified
tenant、client_id、client_secret 设置为在 Entra ID 应用程序注册中获取的值。指定 site_id 后将仅爬取特定站点。省略时将爬取所有可访问的站点。
Box 的设置
将 Box 的文件设为搜索对象。
在 Box Developer Console 中的准备工作
在 Box Developer Console 中创建自定义应用程序
认证方式选择”服务器认证(附带客户端凭据)”
请管理员审批应用程序授权
在 Fess 中的设置
[爬虫] > [数据存储] > [新建]
处理器名称:选择 BoxDataStore
设置参数和脚本
标签:设置为
box
参数设置示例
client_id=your-client-id
client_secret=your-client-secret
enterprise_id=your-enterprise-id
public_key_id=your-public-key-id
private_key=-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIE...\n-----END ENCRYPTED PRIVATE KEY-----
passphrase=your-passphrase
supported_mimetypes=.*
脚本设置示例
url=url
title=name
content=contents
mimetype=mimetype
content_length=size
last_modified=modified_at
设置在 Box Developer Console 中创建的自定义应用程序的认证信息。可以通过 supported_mimetypes 使用正则表达式筛选爬取目标的文件格式。
跨平台搜索优化
增量爬取的应用
在爬取云存储时,与其每次获取所有文件,不如只获取自上次爬取以来更新的文件,即增量爬取,这样更加高效。
请确认各插件的设置中是否提供了增量爬取选项。 通过增量爬取可以减少 API 调用次数,缩短爬取时间。
搜索结果的 URL
对于从云存储爬取的文档,点击搜索结果中的链接将在各服务的 Web UI 中打开文件。 这对于用户来说是自然的操作,通常不需要特别的设置。
运维注意事项
OAuth 令牌的更新
在与云存储的集成中,需要注意 OAuth 令牌的有效期。
Google Drive: 使用服务账号时,令牌会自动更新
SharePoint Online: 客户端密钥有有效期,需要定期更新
Box: 可能需要重新审批应用程序授权
建议将令牌有效期登记到日历中,以防止因过期导致爬取中断。
API 用量监控
云存储的 API 存在用量限制。 特别是在爬取大量文件时,需要监控 API 用量,调整爬取设置以避免超出限制。
权限与安全
请为 Fess 使用的云存储服务账号设置只读访问权限。 不需要写入权限,应遵循最小化安全风险的原则。
此外,结合第5回中介绍的基于角色的搜索功能,还可以实现与云存储权限体系相匹配的搜索结果控制。
总结
本文介绍了如何通过 Fess 整合 Google Drive、SharePoint Online、Box 三个云存储,构建跨平台搜索环境。
各云存储的数据存储插件和 OAuth 认证设置
通过标签区分和筛选信息来源
通过增量爬取优化搜索体验
OAuth 令牌管理和 API 用量监控
无需考虑”文件在哪个云端”,即可立即找到所需文件的环境由此实现。
下一回将介绍持续改善搜索质量的调优循环。