第2回 5分钟了解搜索体验 – 使用 Docker Compose 开启 Fess 初体验

前言

上一篇文章介绍了企业搜索平台的必要性以及 Fess 的概要。 本文将介绍从启动 Fess 到体验搜索功能的最短步骤。

本文的目的是让您快速了解”使用 Fess 能获得怎样的搜索体验”。 我们将使用 Docker Compose,通过几行命令搭建 Fess 环境,爬取网站并体验搜索功能。

目标读者

  • 首次尝试 Fess 的用户

  • 希望快速进行 PoC(概念验证)以评估是否引入 Fess 的用户

  • 具备 Docker 基本操作能力的用户

所需环境

  • 可使用 Docker 和 Docker Compose 的环境

  • 内存 4GB 以上(推荐 8GB 以上)

  • 互联网连接

前置准备(Linux / WSL2 的情况)

Fess 使用的 OpenSearch 在启动时需要大量的内存映射区域。 在 Linux 或 WSL2 环境中,请使用以下命令提高 vm.max_map_count 的值。

$ sudo sysctl -w vm.max_map_count=262144

此设置在操作系统重启后会恢复默认值。如需永久生效,请将其添加到 /etc/sysctl.conf 中。

$ echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf

Note

如果您使用的是 macOS 的 Docker Desktop,则无需进行此设置。

启动 Fess

获取 Docker Compose 文件

Fess 的 Docker Compose 文件已在 GitHub 仓库中公开。 使用以下命令获取。

$ git clone https://github.com/codelibs/docker-fess.git
$ cd docker-fess/compose

compose 目录中准备了若干配置文件。 首先以简单的配置启动。

启动

使用以下命令启动 Fess 和 OpenSearch。

$ docker compose up -d

首次启动时需要下载 Docker 镜像,可能需要几分钟。 可以使用以下命令查看启动状态。

$ docker compose ps

当所有容器的状态均显示为”running”时,表示启动完成。

访问搜索界面

在浏览器中访问 http://localhost:8080/。 如果显示 Fess 的搜索首页,说明已正常启动。

此时索引尚为空,搜索不会返回任何结果。 接下来的步骤将注册爬取目标,使其变为可搜索的状态。

查看管理界面

登录管理界面

访问 http://localhost:8080/admin/,登录管理界面。 默认的认证信息如下。

  • 用户名: admin

  • 密码: admin

在管理界面的仪表盘中可以一览系统状态。

管理界面的结构

管理界面左侧菜单列出了 Fess 的主要管理功能。 在此先简单了解其概要。

爬虫

用于注册搜索目标的区域。管理 Web、文件系统、数据存储三种类型的爬取配置。

系统

调度器、页面设计、字典等系统整体的管理功能。字典中可以管理同义词和停用词等与搜索质量相关的设置。

系统信息

提供搜索日志、任务日志、爬取信息、备份等各类日志和维护功能。

爬取网站

注册爬取目标

让我们实际爬取一个网站,使其可以被搜索。 这里以 Fess 官方网站为目标。

  1. 在管理界面左侧菜单中选择 [爬虫] > [Web]

  2. 点击 [新建]

  3. 输入以下内容

    • URL: https://fess.codelibs.org/ja/

    • 爬取目标 URL: https://fess.codelibs.org/ja/.*

    • 最大访问数: 50

    • 线程数: 2

    • 间隔: 10000

  4. 点击 [创建] 保存

这样就完成了以 10 秒间隔、最多爬取 50 个页面的 Fess 官方网站(日语页面)的配置。

执行爬取

仅保存配置并不会开始爬取。 要开始爬取,需要从调度器执行任务。

  1. 选择 [系统] > [调度器]

  2. 选择”Default Crawler”

  3. 点击 [立即开始]

爬取随即开始。 可以通过 [系统信息] > [爬取信息] 查看进度。 50 个页面左右的话,几分钟即可完成爬取。

体验搜索

尝试搜索

爬取完成后,返回搜索界面 http://localhost:8080/ 进行搜索。

例如,输入”インストール”进行搜索,将会显示 Fess 网站中与安装相关的页面作为搜索结果。

搜索结果页面的元素

搜索结果页面包含以下元素。

搜索结果列表

每条结果显示标题、URL 和正文摘要(摘要片段)。 与搜索关键词匹配的部分会高亮显示。

搜索结果数和耗时

搜索结果上方显示命中数和搜索所用时间。

分页导航

当结果跨越多页时,会显示翻页导航。

更多便捷的搜索功能

Fess 除了简单的关键词搜索外,还提供了多种搜索功能。

AND/OR 搜索

用空格分隔多个关键词即为 AND 搜索。 使用 OR 可以进行 OR 搜索。

インストール Docker       # AND 搜索(包含两者)
インストール OR Docker    # OR 搜索(包含其中之一)

短语搜索

用双引号括起来,可以搜索按该词序匹配的文档。

"全文検索サーバー"

排除搜索

要搜索不包含特定关键词的结果,可以使用减号。

インストール -Windows    # 不包含"Windows"的结果

停止与重启环境

停止

搜索体验结束后,使用以下命令停止环境。

$ docker compose down

数据(索引)会被保留,重启后可以恢复到相同状态继续使用。

如需完全清理(包括数据)

如果需要连同卷一起删除,请执行以下命令。

$ docker compose down -v

此时,爬取创建的索引也会被删除。

从搜索体验中看到的可能性

通过以上体验,我们确认了 Fess 的基本运行方式。 在此,假设实际业务中的应用场景,您可能会产生以下疑问。

  • “能否将公司内部的文件服务器也作为搜索目标?” → 将在 第4回 中介绍

  • “能否在现有的内部网站中嵌入搜索框?” → 将在 第3回 中介绍

  • “能否按部门控制可见的信息?” → 将在 第5回 中介绍

  • “想要搜索 Slack 和 Confluence” → 将在 第6回 中介绍

  • “想要让 AI 回答问题” → 将在 第19回 中介绍

Fess 能够应对以上所有场景。 本系列将逐步介绍这些功能的实现方法。

总结

本文使用 Docker Compose 启动了 Fess,体验了从网站爬取到搜索的完整流程。

  • 使用 Docker Compose 一条命令启动 Fess + OpenSearch

  • 通过管理界面注册爬取目标,并使用调度器执行

  • 在搜索界面体验关键词搜索、AND/OR 搜索、短语搜索

  • 环境的停止与重启也非常简单

下一篇将介绍如何将 Fess 的搜索功能嵌入到现有的网站或门户中。

参考资料