第4回 统一检索分散的文件 – 在多数据源环境中构建跨源检索

前言

上一回介绍了将 Fess 的搜索功能嵌入到现有 Web 站点的方法。 然而在实际的企业环境中,信息不仅存在于 Web 站点,还分散在文件服务器、云存储等各种位置。

本文将介绍如何将多个数据源集成到 Fess 中,构建一个让用户通过单一搜索框即可跨源检索所有文档的环境。

目标读者

  • 公司内部文档分散在多个位置的人员

  • 对文件服务器或云存储的搜索功能不满意的人员

  • 已按照第2回的步骤完成 Fess 启动

场景

假设一家中等规模的企业。该企业的文档分散在以下位置。

  • 内部 Web 站点: 内部门户、内部博客

  • 文件服务器: 各部门的共享文件夹(SMB/CIFS)

  • 本地文件: 服务器上的特定目录

员工想找某份资料时,必须分别在各个工具中进行搜索。 我们将通过 Fess 实现统一管理,使员工能够从一个搜索框进行跨源检索。

数据源设计

构建跨源检索时,首先重要的是设计”将什么内容以何种方式纳入检索范围”。

整理检索对象

首先,整理要纳入检索范围的数据源。

数据源整理
数据源 类型 规模估算 更新频率
内部门户 Web 爬取 数百页 每周
技术博客 Web 爬取 数十至数百页 不定期
共享文件夹 文件爬取 数万个文件 每天
归档 文件爬取 数千个文件 每月

标签分类设计

使用 Fess 的”标签”功能,可以对检索对象进行分类。 用户在搜索时可以选择标签,缩小到特定类别进行检索。

在本次场景中,设置以下标签。

  • 门户: 内部门户和博客的信息

  • 共享文件: 文件服务器中的文档

  • 归档: 过往资料

标签设置

  1. 在管理界面中选择 [爬虫] > [标签]

  2. 点击 [新建] 创建标签

为每个标签设置”名称”和”值”。 值使用英文字母和数字设置,用于与爬取配置进行关联。

爬取配置的构建

Web 爬取的设置

以下是内部门户的爬取配置。

  1. [爬虫] > [Web] > [新建]

  2. 设置以下内容

    • URL: https://portal.example.com/

    • 爬取目标 URL: https://portal.example.com/.*

    • 排除爬取的 URL: https://portal.example.com/admin/.*

    • 最大访问数: 500

    • 线程数: 3

    • 间隔: 5000

    • 标签: 门户

  3. 点击 [创建]

通过设置排除 URL,可以排除管理界面等不需要纳入检索范围的页面。

文件爬取的设置

以下是共享文件夹的爬取配置。

  1. [爬虫] > [文件系统] > [新建]

  2. 设置以下内容

    • 路径: smb://fileserver.example.com/shared/

    • 爬取目标路径: smb://fileserver.example.com/shared/.*

    • 排除爬取的路径: .*\\.tmp$

    • 最大访问数: 10000

    • 线程数: 5

    • 间隔: 1000

    • 标签: 共享文件

  3. 点击 [创建]

SMB 认证设置

如果文件服务器需要认证,则需要配置文件认证。

  1. [爬虫] > [文件认证] > [新建]

  2. 设置以下内容

    • 主机名: fileserver.example.com

    • 方案: Samba

    • 用户名: 服务账户的用户名

    • 密码: 服务账户的密码

  3. 点击 [创建]

本地文件爬取

要爬取服务器上的特定目录时,直接指定文件路径。

  1. [爬虫] > [文件系统] > [新建]

  2. 设置以下内容

    • 路径: file:///data/archive/

    • 爬取目标路径: file:///data/archive/.*

    • 排除爬取的路径: .*\\.(log|bak)$

    • 最大访问数: 5000

    • 标签: 归档

  3. 点击 [创建]

爬取调度设计

爬取多个数据源时,调度设计非常重要。 如果同时执行所有爬取任务,不仅会给服务器资源造成负载,还会对目标服务器产生较大压力。

分散调度

根据数据源的更新频率,分散爬取调度。

爬取调度示例
数据源 执行时间 原因
内部门户 每天 2:00 页面数较少,可在短时间内完成
共享文件夹 每天 3:00 文件数较多,安排在夜间执行
归档 每周日 4:00 更新频率低,每周执行一次即可

调度器设置

在管理界面的 [系统] > [调度器] 中,可以设置爬取任务的执行时间。 默认的”Default Crawler”任务会一次性执行所有爬取配置。

通过路径映射优化搜索结果

爬取的 URL 或文件路径对用户来说可能难以理解。 使用路径映射功能,可以转换搜索结果中显示的 URL。

设置示例

将文件服务器的路径转换为用户可通过浏览器访问的 URL。

  1. [爬虫] > [路径映射] > [新建]

  2. 设置以下内容

    • 正则表达式: smb://fileserver.example.com/shared/(.*)

    • 替换: https://fileserver.example.com/shared/$1

这样,点击搜索结果中的链接即可通过浏览器直接访问文件。

跨源检索的使用

使用标签进行筛选检索

爬取完成后,在搜索页面体验跨源检索。

搜索页面会显示标签的选项卡或下拉菜单。 用户选择”全部”即可进行跨源检索,选择特定标签则可限定在该类别内进行检索。

例如,搜索”项目计划”时,搜索结果会返回门户的文章、共享文件夹中的 Word 文件以及归档中的 PDF,这些结果混合在一起呈现。 如果使用”共享文件”标签进行筛选,则可以仅限定为文件服务器中的文档。

搜索结果排序

默认情况下,搜索结果按照与搜索关键词的相关度(分数)排序。 无论数据源的类型如何,相关性最高的文档会优先显示。

总结

本文介绍了如何将多个数据源集成到 Fess 中,构建跨源检索环境。

  • Web 站点、文件服务器、本地文件的3种爬取配置

  • 通过标签进行分类和筛选检索

  • 爬取调度的分散设计

  • 通过路径映射进行 URL 转换

引入跨源检索后,用户无需关心”文档存储在哪里”,即可找到所需的信息。

下一回将介绍根据部门权限控制搜索结果的基于角色的搜索设计。

参考资料