Skip to content

[Feature] tantivy インデックス基盤(スキーマ定義・lindera日本語トークナイザー・Writer/Reader) #4

@Kewton

Description

@Kewton

概要

tantivy による全文検索インデックスの基盤を構築する。日本語対応(lindera)を含む。

背景・動機

Phase 1 の検索機能の中核。Markdownパーサーが生成した構造化データを tantivy に格納し、高速検索を可能にする。

提案する解決策

src/indexer/ モジュールとして以下を実装する。

主要な機能

  1. スキーマ定義: tantivy のスキーマを定義(path, heading, body, tags 等)
  2. lindera トークナイザー: 日本語テキストの分かち書き対応
  3. Index Writer: ドキュメントの追加・更新
  4. Index Reader: インデックスからの読み取り

スキーマ設計(案)

フィールド 用途
path STRING (stored, indexed) ファイルパス
heading TEXT (stored, indexed) セクション見出し
body TEXT (stored, indexed) セクション本文
tags TEXT (stored, indexed) frontmatter タグ(スペース区切り)
heading_level U64 (stored, indexed) 見出しレベル(1-6)
line_start U64 (stored) セクション開始行番号

lindera 統合

  • tantivy のカスタムトークナイザーとして lindera を登録
  • body / heading フィールドに日本語トークナイザーを適用
  • 英語テキストも正しくトークナイズされること

受け入れ基準

  • tantivy スキーマが定義されている
  • lindera トークナイザーが tantivy に組み込まれている
  • ドキュメントをインデックスに追加できる
  • インデックスから読み取りができる
  • 日本語テキストで検索が正しく動作する
  • 英語テキストで検索が正しく動作する
  • .commandindex/tantivy/ にインデックスが保存される
  • cargo test / clippy / fmt 全パス

影響範囲

新規ファイル

  • src/indexer/mod.rs
  • src/indexer/schema.rs
  • src/indexer/writer.rs
  • src/indexer/reader.rs
  • tests/indexer_tantivy.rs

依存クレート(追加)

  • tantivy — 全文検索エンジン
  • lindera-tantivy or lindera — 日本語トークナイザー

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions