КурсХакатон Apache DorisЗадания в своём темпе · начните в любое время · без регистрации

Трек B · 6 заданий, выберите одно

От документации к демо

Выберите страницу функции Apache Doris, выполните пример на локальном Doris и превратите его в пошаговое демо. Ваш pull request добавит демо на эту страницу doris.apache.org.

  • 30–60 мин на задание
  • Для начинающих
  • SQL и браузер
  • Результат: PR документации

Нужна помощь? Спросите в #dev в Slack Apache Doris. Разработчики и другие участники помогут вам.

1

Подготовка

Как работает трек B, запущенный кластер и fork документации.

Как работает трек B

Одна страница функции, одно демо, один pull request.

Все новые пользователи Doris начинают с этих страниц. Выполнение с нуля помогает быстрее всего найти пробелы, а демо, работающее от начала до конца на пустом кластере, лучше всего подтверждает работоспособность функции. Ваше демо попадёт на саму страницу.

  1. Следуйте странице. Откройте страницу задания и выполните все примеры на локальном Doris точно по описанию. Отметьте ошибки, отличающийся вывод и неясные моменты.

  2. Создайте демо. На пустом кластере подтвердите каждый пункт задания. Выполните всё по порядку и сохраните фактический вывод каждого оператора.

  3. Добавьте на страницу. Один Пошаговое демо раздел сразу после Quick start в обеих копиях страницы. Найденные ошибки исправьте тем же 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 страниц функций. Выберите одну; закончили раньше? Возьмите ещё: для каждого задания нужен отдельный pull request.

Полнотекстовый поиск + 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

Начните сГибридный поиск+ Reciprocal Rank Fusion

Ваше демо подтверждает

Совет

score() нельзя выбирать в запросе с векторным ранжированием или помещать внутрь ROW_NUMBER(): ранжируйте обычное score() во внешнем запросе, как на странице RRF.

VARIANT

30–45 мин · изменения key-features/variant-data-type.mdx

Начните сТип данных VARIANT

Ваше демо подтверждает

Совет

variant_type(payload) показывает пути и типы, определённые Doris для одной строки; сравните с выводом DESC команды.

Unique Key + Sequence Column

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, а единый контейнер отвечает на обоих портах.

3

Завершите работу

Что добавляет pull request, как его отправить и получить значок.

Что добавляет ваш pull request

Один pull request в apache/doris-website, он и есть ваша работа.

  • Раздел демо## Step-by-step demo сразу после Quick start, по шагу на каждый пункт: блок SQL, затем Ожидаемый результат с фактическим выводом. Демо начинается на пустом кластере и само создаёт базу данных.
  • Обе копииОдинаковые изменения в docs/key-features/<page>.mdx и versioned_docs/version-4.x/key-features/<page>.mdx. Эти задания обновляют английские страницы; переводы поддерживаются отдельно.
  • ИсправленияИсправьте в том же pull request всё неверное, что нашли на странице. Не уверены, что это ошибка? Укажите в описании.
  • ОписаниеШаблон pull request репозитория (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. Pull request и есть работа, больше ничего заполнять не нужно.

  2. Поделитесь результатом в #dev в Slack Apache Doris: ссылкой на pull request или репозиторий и снимком экрана либо коротким демо. Вопросы, отправка работ и выдача значков происходят там.

Каждый участник задания получает значок участника Apache Doris: принятый pull request в Doris не требуется. Срока нет, работайте столько, сколько нужно. Можно участвовать командой, но это не обязательно. Укажите GitHub ID каждого участника в описание pull request.

Дополнительные цели

  • Выберите второе задание. Для каждого выполненного задания нужен отдельный pull request.

  • Выйдите за рамки быстрого старта. Выполните более длинные примеры по ссылкам со страницы, например проектирование таблиц и справочник SQL: их проверяют реже.

  • Проверьте другой pull request трека B. Выполните его демо на своём 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 allocatedПорты 9030, 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 не менее 6 GB (Settings → Resources). На 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() без обёртки (см. ловушки выше)
Build Check не проходит в вашем pull requestОткройте журнал проверки. Обычно причина в MDX: незакрытый тег либо неэкранированный { или < в тексте. Внутри ограждённых блоков кода допустимо всё.
B6: curl ничего не выводит или выводит 307Добавьте --location-trusted: FE перенаправляет загрузку в BE, и curl должен следовать перенаправлению с вашими учётными данными
B6: Label Already ExistsПри повторном запуске это ожидаемо: метка допускает загрузку не более одного раза. Для повторной загрузки используйте новую метку
Если не получается больше 10 минутНапишите в #dev в Slack Apache Doris

Справочные материалы

Полнотекстовый поискВекторный индексГибридный поискТип данных VARIANTUnique KeyStream LoadReciprocal Rank FusionРуководство по участию в документацииТребования к формату документацииРуководство по pull request

Хакатон Apache Doris

Все задания

Вернуться к курсу
  1. A160–120 минПриложение гибридного поискаОткрыть описание задания
  2. A245–90 минЗадавайте вопросы Doris через MCPОткрыть описание задания
  3. A360–120 минОбозреватель поиска по логамОткрыть описание задания
  4. A460–120 минОбозреватель трассировок агентовОткрыть описание задания
  5. B30–60 минТрек B · От документации к демоВы здесь