课程Apache Doris 黑客松自主安排进度 · 随时开始 · 无需报名

赛道 B · 6 个任务,任选一个

从文档到 演示

选择一篇 Apache Doris 功能文档,在本地 Doris 中运行,将其补充为逐步演示。您的 Pull Request 会将演示加入 doris.apache.org 对应页面。

  • 每个任务30–60分钟
  • 新手友好
  • SQL 与浏览器
  • 提交文档 PR

遇到问题? 可在 #dev 提问,频道位于 Apache Doris Slack。维护者和其他参与者会提供帮助。

1

准备环境

了解赛道 B 流程,启动集群,并 Fork 文档仓库。

赛道 B 如何进行

一篇功能文档、一份演示、一个 Pull Request。

这些页面是新用户的起点。从零运行最容易发现缺漏,而一份能在空集群上从头运行到尾的演示,能够验证功能是否可用。您的演示将直接加入文档。

  1. 按文档操作。 打开任务对应页面,在本地 Doris 逐条原样运行所有示例,记录失败、输出不同或含义不清的地方。

  2. 构建演示。 从空集群开始验证任务清单的每一点,按顺序运行,保存每条语句的真实输出。

  3. 补充到文档。 在两份页面的 Quick start 之后增加 Step-by-step demo(逐步演示) 章节,并在同一 Pull Request 中修复发现的问题。

  4. 提交 Pull Request 到 apache/doris-website,这就是您的任务提交,参见 提交并领取徽章.

代码面板展示当前任务的模板

开始之前

  • docker pull apache/doris:all-in-one-4.1.3
  • docker run -d --name doris -p 9030:9030 -p 8030:8030 -p 8040:8040 apache/doris:all-in-one-4.1.3
  • docker exec -it doris mysql -uroot -h127.0.0.1 -P9030
  • git clone --depth 1 --filter=blob:none --sparse https://github.com/<your-github-id>/doris-website.git && cd doris-website && git sparse-checkout set docs/key-features versioned_docs/version-4.x/key-features
主机
127.0.0.1
端口
9030
用户
root无密码
数据库
自行创建,例如 fts_demo
2

选择任务

6 篇功能文档,任选一篇;提前完成后可继续选择其他任务,每个任务独立提交 PR。

全文检索与 BM25

30–45 分钟 · 编辑 key-features/full-text-search.mdx

从这里开始全文检索+ BM25

演示需验证

提示

页面的运算符表列出了全部 MATCH_* 形式。直接选择 score() 并按其排序;若在它外面包裹表达式,例如 ROUND(score()),查询会被拒绝。

向量检索

30–45 分钟 · 编辑 key-features/vector-index.mdx

从这里开始向量索引

演示需验证

提示

每个向量,包括查询向量,都必须恰好包含 dim 个数值,否则查询会因维度不匹配而失败。

混合检索

30–45 分钟 · 编辑 key-features/hybrid-search.mdx

从这里开始混合检索+ 倒数排名融合

演示需验证

提示

score() 不能出现在向量排序查询的 SELECT 中,也不能放入 ROW_NUMBER()中;应在外层查询对原始 score() 结果排名,做法见 RRF 文档。

VARIANT

30–45 分钟 · 编辑 key-features/variant-data-type.mdx

从这里开始VARIANT 数据类型

演示需验证

提示

variant_type(payload) 展示 Doris 为单行推断的路径和类型,可与 DESC 输出对照。

Unique Key 与 Sequence 列

30–45 分钟 · 编辑 key-features/unique-key.mdx

从这里开始Unique Key 模型

演示需验证

提示

分别用一条 INSERT 和三条独立 INSERT 执行三次写入,结果应保持一致。

Stream Load

30–60 分钟 · 编辑 key-features/stream-load.mdx

从这里开始Stream Load 导入

演示需验证

提示

将导入请求发送到 FE 的 127.0.0.1:8030 ,使用 curl --location-trusted,FE 会将请求重定向至 BE,All-in-One 容器同时提供两个端口。

3

完成并提交

了解 PR 需要包含的内容、提交方式及徽章领取。

Pull Request 应包含什么

在以下仓库提交一个 Pull Request: apache/doris-website,即完成任务提交。

  • 演示章节## Step-by-step demo 放在 Quick start 之后,按检查清单逐步展开:先写 SQL 代码块,再给出 Expected result(预期结果) 及真实输出。演示从空集群开始,因此需要自行创建数据库。
  • 两份文档将相同修改提交到 docs/key-features/<page>.mdx 和 versioned_docs/version-4.x/key-features/<page>.mdx。本任务要求更新英文页面,其他语言的翻译独立维护。
  • 问题修复在同一 PR 中修复页面其他位置发现的错误;若无法确定是否为错误,请先写入 PR 说明。
  • PR 说明使用仓库的 PR 模板,说明 dev 与 4.x 英文页面的更新,并注明任务名称,例如 Apache Doris Hackathon · Track B · B1.

以下任务的模板:

B1 · 页面章节full-text-search.mdx · 模板
## Step-by-step demo {#demo}One or two sentences: what this demo shows, from an empty cluster.### 1. A table with an inverted index (english parser, phrase support) on a text column```sqlCREATE DATABASE IF NOT EXISTS fts_demo;USE fts_demo;CREATE TABLE … ;```### 2. MATCH_ANY vs MATCH_ALL on the same words, with different row counts```sqlSELECT … ;```**Expected result**```+----+-------+| id | title |+----+-------+```### 3. A MATCH_PHRASE query that only matches when the words are adjacent```sqlSELECT … ;```**Expected result**```+----+-------+| id | title |+----+-------+```### 4. BM25 ranking: score() with ORDER BY … DESC LIMIT n, and why the top row wins```sqlSELECT … ;```**Expected result**```+----+-------+| id | title |+----+-------+```
B1 · Pull Request标题与说明 · 模板
[docs] Add a step-by-step demo to the Full-text Search page## Versions- [x] dev- [x] 4.x- [ ] 3.x- [ ] 2.1 or older (not covered by version/language sync gate)## Languages- [ ] Chinese- [x] English(Keep the Docs Checklist from the template and tick what applies.)Apache Doris Hackathon · Track B · B1 Full-text Search + BM25This task updates the English source pages; both copies get the same change:- docs/key-features/full-text-search.mdx- versioned_docs/version-4.x/key-features/full-text-search.mdx## What this PR changes- Adds a "Step-by-step demo" section after Quick start that shows: …- Fixes on the page: … (or "none")## What I found in the docs- Where: … / The page says: … / What happened: … / What it should say: …## ValidationRan every statement from an empty cluster on apache/doris:all-in-one-4.1.3; every Expected result is the real output.

代码面板:最近阅读任务对应的模板

完成标准

您的检查清单

提交并领取徽章

参与 → 提交 → 领取徽章。

  1. 提交您的 Pull Request 到 apache/doris-website,从您 Fork 仓库的分支发起。PR 本身就是任务提交,无需另行填写内容。

  2. 分享成果 到 #dev ( Apache Doris Slack):附上 Pull Request 或仓库链接,以及截图或简短演示。问题交流、成果提交和徽章领取都在该频道处理。

每位参与任务的开发者都可获得 Apache Doris 贡献者徽章,无需先有 PR 合入 Doris。任务没有截止日期,可按自己的节奏完成。可以组队,也可独立参与;请将每位成员的 GitHub ID 写入 Pull Request 说明.

进阶目标

  • 再选一个任务。 每个完成的任务独立提交一个 PR。

  • 继续验证快速入门之外的内容。 运行页面链接的较长示例,例如建表指南和 SQL 手册中的示例,这些内容通常较少得到验证。

  • 审阅其他赛道 B 的 Pull Request。 在自己的 Doris 上运行演示,并在评审中说明实际结果。

故障排查与参考资料

SymptomFix
docker: command not found 出现在 macOS 上启动 Docker Desktop;若已运行,请为 CLI 创建链接: sudo ln -s /Applications/Docker.app/Contents/Resources/bin/docker /usr/local/bin/docker
error getting credentials 出现在拉取镜像时请移除 credsStore 字段,所在文件为 ~/.docker/config.json (仅适用于本地开发)
port is already allocated9030、8030 或 8040 已被其他程序占用,常见原因是另一个 Doris 实例。先查看运行中的容器(docker ps),再停止冲突的服务;也可映射其他主机端口,例如 -p 19030:9030,然后连接 19030
The container name "/doris" is already in use此前已启动过该容器,可执行: docker start doris。如需从头开始,请执行 docker rm -f doris ,此操作会删除容器数据
容器退出,或始终未变为 (healthy)请查看 docker logs doris。通常是内存不足,请在 Docker Desktop 的 Settings → Resources 中分配至少 6 GB。Apple Silicon 设备不要添加 --platform linux/amd64
permission denied: ./doris.sh解压工具可能丢失了可执行权限,请执行: chmod +x doris.sh,或运行 bash doris.sh start
Current database is not set请先执行 USE hackathon; ,或在连接时使用 -Dhackathon
score() function requires WHERE clause with MATCH function, ORDER BY and LIMIT请添加 MATCH_* 谓词、 ORDER BY score() DESC 以及 LIMIT,并保持 score() 不被其他表达式包裹,参见前文说明
PR 的 Build Check 失败查看检查日志。常见原因是 MDX 标签未闭合,或正文中直接使用了 { 或 < 。放入围栏代码块后则不受此限制。
B6: curl 没有输出,或打印 307请添加 --location-trusted,因为 FE 会将导入请求重定向至 BE,curl 需要携带凭证跟随重定向。
B6: Label Already Exists重复运行时出现该结果属于预期:同一 Label 最多导入一次。重新导入请使用新 Label。
超过 10 分钟仍未解决可在 #dev 频道提问,位于 Apache Doris Slack

参考资料

全文检索向量索引混合检索VARIANT 数据类型Unique Key 模型Stream Load 导入倒数排名融合文档贡献指南文档格式规范Pull Request 指南

Apache Doris 黑客松

全部任务

返回课程
  1. A160–120 分钟混合检索应用查看说明
  2. A245–90 分钟通过 MCP 询问 Doris查看说明
  3. A360–120 分钟日志检索工具查看说明
  4. A460–120 分钟Agent 链路分析工具查看说明
  5. B30–60 分钟赛道 B · 从文档到演示当前步骤