No description
Find a file
2026-06-09 14:51:21 +03:00
chunker.go first commit 2026-06-09 14:51:21 +03:00
chunker_test.go first commit 2026-06-09 14:51:21 +03:00
coverage.out first commit 2026-06-09 14:51:21 +03:00
go.mod first commit 2026-06-09 14:51:21 +03:00
go.sum first commit 2026-06-09 14:51:21 +03:00
LICENSE first commit 2026-06-09 14:51:21 +03:00
README.md first commit 2026-06-09 14:51:21 +03:00
types.go first commit 2026-06-09 14:51:21 +03:00
utils.go first commit 2026-06-09 14:51:21 +03:00

go-doc-chunker

Библиотека на Go для разбиения Markdown (.md, .mdx) и plain text (.txt) документов на семантически значимые фрагменты (чанки).

Установка

go get git.ymnuktech.ru/ymnuk/go-doc-chunker

Использование

import "git.ymnuktech.ru/ymnuk/go-doc-chunker"

func main() {
    p := chunker.NewParser()
    chunks, err := p.Parse("doc.md", content, mtime)
    if err != nil {
        // обработка ошибки
    }
    for _, c := range chunks {
        fmt.Printf("Секция: %s\nТекст: %s\n", c.SectionPath, c.Text)
    }
}

Возможности

  • Парсинг Markdown — учитывает иерархию заголовков, строит путь секции (например, Глава 1 > Раздел 1.1)
  • Парсинг plain text — разделяет по пустым строкам, каждая часть обрабатывается как абзац
  • Объединение чанков — маленькие абзацы в одной секции объединяются, пока не превысят MaxChunkSize
  • Принудительное разбиение — текст больше MaxChunkSize делится по границам слов с настраиваемым перекрытием (OverlapRatio)
  • Настраиваемые параметрыMaxChunkSize (по умолчанию 1400 рун) и OverlapRatio (по умолчанию 0.15)
  • UTF-8 — все расчёты размера идут по рунам, безопасно для CJK, кириллицы и т.д.

API

Типы

  • Chunk — фрагмент с путём к файлу, путём секции, текстом, смещениями строк/символов и временем модификации
  • Parser — основной парсер с полями MaxChunkSize и OverlapRatio

Функции

  • NewParser() — создаёт парсер с конфигурацией по умолчанию (1400, 0.15)
  • NewParserWithConfig(maxChunkSize int, overlapRatio float64) — создаёт парсер с пользовательской конфигурацией
  • (*Parser).Parse(filePath string, content []byte, mtime int64) ([]*Chunk, error) — парсит содержимое и возвращает чанки

Поддерживаемые форматы

Расширение Парсер
.md Markdown (через goldmark)
.mdx Markdown (через goldmark)
.txt Plain text

Лицензия

MIT