わかち書きをする DuckDB の拡張

DuckDB の本を読んで https://blog.nakagami.org/article/518412220.html DuckDB良さそうと思った。

C/C++ で拡張が作れるらしい。

・・・ということは、誰か Rust で書けるようにしてるのでは?と探したら
本家にテンプレートがあって
https://github.com/duckdb/extension-template-rs

ここに日本語の解説があった
https://zenn.dev/yutannihilation/articles/663c879b74343c

試行錯誤の末、「わかち書き」をする拡張が書けた
https://github.com/nakagami/wakati

git clone --recurse-submodules git@github.com:nakagami/wakati.git
cd wakati
make configure
make debug

したら ./build/debug/extension/wakati/wakati.duckdb_extension というファイルができるので

duckdb -unsigned

LOAD './build/debug/extension/wakati/wakati.duckdb_extension';
SELECT wakati(col0) FROM values ('すもももももももものうち'), ('私の名前は中野です') AS v;

をしてこんな感じ
ducdb_extensin_screenshot.png
(事前に mecab辞書のインストールが必要)

ここ https://voluntas.ghost.io/duckdb-japanese-full-text-search/ で、 DuckDB-FTS + Lindera で、全文検索しているようなことができるんじゃないかと思っている

この記事へのコメント