UTF-8文字列を圧縮されたUTF-8文字列に変換するライブラリ u-lzss

UTF-8文字列の圧縮ライブラリを作っている。いまさら圧縮ライブラリをなぜ作るのかというと、JavaScriptによる全文検索エンジンで、インデックスの圧縮を行いたいからである。検索結果に概要文を出すには、インデックスが元テキスト全てを含む必要がある。従って、インデックスサイズの肥大化を避けるには、圧縮が必要不可欠である。ところが、次の条件を満たすライブラリを見つけられなかった。

前者の条件が必要なのは、JavaScriptでバイナリが扱えない為、圧縮後のデータがUTF-8文字列である必要がある為である。後者の条件は当たり前であるが、意外に該当するライブラリは少なかった。JavaScriptによるzipの解凍ライブラリは公開されているが、ライセンスが不明であった。

しょうがないので、LZSS符号をベースに、自分でライブラリを作ってみた。最低限のテストは通ったようなので、とりあえず、公開してみます。現在のところ、JavaScriptRubyで符号・復号が出来ます。なお、符号化仕様はまだまだ流動的ですし、圧縮効率はあまり高くありません。

圧縮ライブラリを作ったので、日本語wikipedia全文検索デモを作りたいのだけど、wiki記法からプレーンテキストにするのが面倒くさい。