进阶 docs.cloudreve.org 2026-10-17 18:46:57 · 22 阅读

第31章 全文搜索

全文搜索 全文搜索允许用户根据文件内容进行检索。启用该功能后,Cloudreve 会在文件上传或更新时通过 Apache Tika 提取文件内容,并将其发送给 Meilisearch 进行索引。这样,用户在搜索时就能匹配文档内的文本内容,从而快速定位目标文件。

前提条件 全文搜索依赖以下两项外部服务,请在启用前确保它们已部署:

| 服务 | 用途 | 默认端口 | |---|---|---| | Apache Tika | 从文件中提取文本内容 | 9998 | | Meilisearch | 对提取的文本内容进行索引 | 7700 |

通过 Docker Compose 部署 若你是使用 Docker Compose 部署 Cloudreve,可以应用 docker-compose.fts.yml 覆盖文件来添加全文搜索功能,该文件会将 Tika 和 Meilisearch 与 Cloudreve 一同部署。

生成 Meilisearch Master Key 并将其保存至 .env 文件: ```bash # 生成 Master Key openssl rand -hex 32

# 编辑 .env 文件并设置 MEILI_MASTER_KEY=<生成的密钥> ``` 然后使用 FTS 覆盖配置重启: ```bash docker compose -f docker-compose.yml -f docker-compose.fts.yml up -d ``` 待服务启动后,前往「启用全文搜索」章节,在管理面板中配置端点。在 Docker Compose 网络环境下,请使用以下参数值:

| 参数 | 值 | |---|---| | Meilisearch Endpoint | http://meilisearch:7700 | | API Key | .env 中设置的 MEILI_MASTER_KEY | | Apache Tika Endpoint | http://tika:9998 |

若未使用 Docker Compose,请按照下文的步骤手动部署。

部署 Apache Tika Server Apache Tika 是一款开源的内容提取工具,支持从常见文档格式中提取文本以便建立索引。

通过 Docker 启动 Apache Tika Server: ```bash docker run -d --name tika -p 9998:9998 apache/tika:latest ``` 完整镜像 若需要完整的 Tika 处理能力(包括 GDAL 和 Tesseract OCR),请使用完整镜像: ```bash docker run -d --name tika -p 9998:9998 apache/tika:latest-full ``` 完整镜像内置对英语、意大利语、法语、西班牙语和德语的 OCR 支持。若要添加其他语言,请参阅 Dockerfile 进行自定义构建。

启动后,访问 http://localhost:9998 以确认服务运行正常。

部署 Meilisearch Meilisearch 是一款开源搜索引擎,用于索引文件内容并提供高效的搜索能力。

生成 API Key 首先,生成一个随机字符串作为 Meilisearch Master Key: ```bash openssl rand -hex 32 ``` 请妥善保存此密钥,配置 Cloudreve 时需要用到。

启动 Meilisearch 通过 Docker 启动 Meilisearch: ```bash docker run -d \ --name meilisearch \ -p 7700:7700 \ -e MEILI_MASTER_KEY='<你的 API Key>' \ -v $(pwd)/meili_data:/meili_data \ getmeili/meilisearch:latest ``` 启动后,访问 http://localhost:7700 以确认服务运行正常。

启用全文搜索 在 Cloudreve 管理面板中,前往「文件系统 -> 全文搜索」以启用该功能,并填写以下配置:

索引器 (Meilisearch) | 参数 | 说明 | |---|---| | Meilisearch Endpoint | Meilisearch 服务地址,默认为 http://localhost:7700。若 Cloudreve 运行在 Docker 容器中,请使用容器网络内的地址。 | | API Key | 上一步生成的 Master Key。 | | AI 语义搜索 | 可选功能,配置方法请参阅「AI 语义搜索」。 |

内容提取器 (Apache Tika) | 参数 | 说明 | |---|---| | Apache Tika Endpoint | Tika Server 地址,默认为 http://localhost:9998。若 Cloudreve 运行在 Docker 容器中,请使用容器网络内的地址。 | | 支持的扩展名 | 指定需要索引的文件扩展名列表;不在列表中的文件将被跳过。支持的类型请参阅 Apache Tika 支持格式。 | | 最大文件大小 | 超过此大小的文件将不被索引。 |

分块 (Chunking) | 参数 | 说明 | |---|---| | 分块大小 | 文件内容在索引前会按此大小分块,以提升搜索准确性。Meilisearch 建议分块大小约为 1KB。 |

验证配置 保存设置后,刷新页面并上传一份新的文档文件,然后尝试搜索文件内的内容,以验证索引是否正常工作。

重新索引现有文件 启用全文搜索后,Cloudreve 不会自动索引现有文件。若要索引历史文件,请前往管理面板「文件系统 -> 全文搜索 -> 索引器 (Meilisearch) -> 索引操作」,点击「重建索引」。

⚠️ 注意 重建索引将对所有符合条件的文件重新提取内容并构建索引。若文件数量较多,此过程可能耗时较长,建议在非高峰时段执行。

下一步 若希望启用 AI 语义搜索以获得更智能的搜索体验,请参阅「AI 语义搜索」。

评论 (0)