実際には、独自のトークナイザーを作成する必要はありません。
「単純な」トークナイザーでは区切り文字をカスタマイズできますが、これは文書化されていない機能です。
次のように FTS テーブルを作成すると、SQLite は ' ' (スペース) と '#' (ハッシュ) 文字のみをトークン化します。
CREATE VIRTUAL TABLE documents USING fts4(title, content, tokenize=simple '' '# ');
2012 年のこの機能に関する SQLite メーリング リストでの議論がここで行われました。この機能をサポートする SQLite のソース コードはこちらです。
ドキュメントの欠如に関するメーリングリストからの引用:
「おそらくその理由は、この機能が存在することすら忘れていたからです。2006 年に FTS1 が最初に導入されて以来、単純なトークナイザーにはそのまま存在していたようです。」
この機能を安全に使用できるかどうかについての引用:
「しかし、それは長い間コードに組み込まれてきたため、長年にわたって確立されたプログラムを破壊することを恐れて、あえて変更することはありません。」
...しかし、機能が完全にテストされている可能性が低いことも言及されました.
SQLite ユーザー メーリング リストにメールを送信し、この機能を文書化できるかどうか尋ねました。
更新: 追加したいことの 1 つは、「*」や「-」などの文字がこのように区切り文字として構成されている場合、クエリの FTS MATCH 句からも削除されることがわかったことです。したがって、これは '.' に対しては正常に機能しますが、など、FTS MATCHの特殊文字でもある文字には使用できません。