ASCIIオンリの

プロトタイプなTokenizerを作成中。てーか、この段階でもうおなかいっぱい orz
以下は仕様というかメモ書き

  1. 基本はbi-gram
  2. スペースでDelimitされる
  3. Delimitされた結果が1文字だったら、そこだけuni-gramにする。
  4. 終端は考慮しない。*1
  5. lowerでRegularizeする。
  6. ASCIIのみを受け付ける*2


で、以下はPrototype作成後に試す必要のある項目

  1. 歯抜けに対応するのか?*3
  2. ある程度の量喰わせてどの程度の効率とフットプリントになるのか。


以下、備忘録

  1. SQLite3の組み込みSimpleを見てみた結果、例えば"Hello world"とあったら、1stTokenはStart=0、End=5となり、2ndはStart=6,End=11となる。*4
  2. Spaceをいっぱい食わせてみたら、n-1のTokenのEndOffsetとnのStartOffsetは不連続になっていた*5


#てーか、、、STLのちゃんとしたリファレンスが必要かもしれないと痛感。MSDNのISO/ANSI C++の項目全部英語だし orz
#あと、この際もう日本語にしてくれとは言わないから、FTS3のTokenizerのちゃんとしたDocが欲しい。。。*6 *7

*1:終端を扱わないというか、、、"Piyo\0"だとした場合、"yo"でTokenizeを終了して、"y\0"はTokenizeの対象外とする。

*2:もちろん現段階での話。最終的にはUTF-8を喰えるようにする。

*3:C:\hoge\piyo とあったとき C:\piyoでミスヒットするのかしないのか

*4:1stはTokenに乗らないSpaceもカウントしてるし、2ndは\0もカウントしてる。

*5:故に、不連続になっていても構わないと思う

*6:ドラフトだからないんだろうけどさ

*7:だからって、見たこともない言葉にされたらそりゃそれで泣けてくる orz