hitode909の日記

趣味はマリンスポーツですの日記です

n-gramで全文検索できるプログラムを作ってみた

昨日,プログラム中から単語を切り出して検索できるプログラムを作った.

検索はできるが,一単語でしか検索できない,記号を検索できないなどの問題があって,あまり便利ではなかった.
単語を切り出すのをやめて,n-gramして全文検索できるようにした.
こういう感じ.
http://gyazo.com/bc2fb2592e267026599694d266396873.png


これで,どんな文字でも検索できるようになった.

% searcher 'こんにち'
/Users/fkd/co/newgrep/searcher.rb
3:# こんにちは,今日はよいお天気ですね
9:# こんにちこんにちこんにち

% searcher '< Sequel::Model'
/Users/fkd/co/newgrep/model.rb
16:class LineContent < Sequel::Model
27:class Directory < Sequel::Model
41:class Document < Sequel::Model
108:class Index < Sequel::Model
126:class Token < Sequel::Model


1文字ずつずらして見ていくので,インデックスを作るのは遅くなった.検索速度はそんなに変わってない.
次は高速化,という感じなのだけど,勘でやってるので,難しそう.