文档杂乱怎么查找:用 Papra 搭一个极简文档管理系统

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

在企业里经常会遇到沉积多年的文档,想要知道某个关键词来自哪个文档,毫无头绪,纵使有类似everything这样的外部工具,但却无法通过内容搜索。

随着AI的发展,很多公司通过建立知识库,达到了快速检索的目的。本节不聊知识库,分享一个极简的文档管理平台Papra ,同样能够达到搜索的目的。

02 简介

Papra 是一个极简的文档管理与归档平台。它的设计目标是简单易用,让人人都能轻松上手。定位类似于Paperless-ngx 的轻量替代品,专注于长期文档存储与管理------把那些"不知道什么时候会用上但丢了就麻烦"的文档(收据、保修卡、合同、发票等)统一存起来,随时全文搜索找回。

Github地址:github.com/papra-hq/pa...

体验地址:demo.papra.app/

03 部署

我们采用Docker部署的方式。

部署文档地址:docs.papra.app/self-hostin...

3.1 生成认证秘钥

Papra的启动需要一个秘钥,可以自己配置,也可以通过工具生成。

命令行:

bash 复制代码
openssl rand -hex 48

通过官网工具直接生成:

3.2 持久化准备

持久化是可选的,正常使用我们需要持久化我们文档,创建挂载的文档。

bash 复制代码
mkdir -p ./papra-data/{db,documents}

3.3 拉取镜像并启动

bash 复制代码
docker run -d \
>   --name papra \
>   --restart unless-stopped \
>   --env APP_BASE_URL=http://xxxxx.25:1221 \
>   --env AUTH_SECRET=c36851ffc3ecb9f245d7a82c130752c9a6f8a1c9c9b4b8e5e46dab7e8e2def687ebf24378761b8d7c4979e776dee4c3f \
>   -p 1221:1221 \
>   -v $(pwd)/papra-data:/app/app-data \
>   --user $(id -u):$(id -g) \
>   ghcr.io/papra-hq/papra:latest

启动完成之后,访问:http://ip:1221 即可

04 使用

4.1 注册账号

初次进入需要注册账号,我们正常注册即可。

注册完成之后就会进入主页:

4.2 导入文档

进入主页之后,我们就可导入管理的文档。导入的文档就可以展示文档列表。

我们还可以为自己的文档打上标签:

左侧还可以管理属性、标签规则、分享链接以及成员管理:

还可以通过右侧的管理直接查看仪表盘等:

4.3 搜索

搜索功能是该项目的主要功能。

例如我们直接搜索:Mysql

就会直接罗列出包含内容的文档,帮助我们快速找到文档的出处。

找到文档,我们就可以查看文档的详情:

4.4 搜索不到的原因

在测试过程中,并不是内容中所有的文字都可以搜索到。

Papra 用的是 SQLite FTS5(Full-Text Search 5)------SQLite 内置的全文搜索引擎,零外部依赖,数据存在同一个 .sqlite 文件里,默认分词器叫 unicode61,使用过ES或者Solr的朋友可能都知道倒排索引的原理。

05 小结

Papra 是一个定位精准、部署简单、功能够用的文档管理工具。它不追求大而全,而是把"上传 → 提取文字 → 打标签 → 搜索"这条核心链路做到极简。对于不需要 Paperless-ngx 那种重量级系统的个人或小团队来说,Papra 是一个非常合适的自托管选择。

相关推荐
考虑考虑1 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长2 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__2 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
云浪2 小时前
Go源码分析:搞懂 Go 是如何实现堆的
后端·go·源码阅读
小π军4 小时前
操作系统面试题
java·linux·服务器
倔强的石头1064 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Shaoshing5 小时前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼5 小时前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
鱼宵5 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai