Enjoy*Study - Storage メモ の続き。
SQLiteでテキストの部分一致検索を行うにあたって、どうするのが一番良いか試行錯誤中…
- LIKE '%文字%'みたいな感じでも、大量のレコードじゃなきゃそれなりのパフォーマンスが出る。(50文字くらいのテキストで1万レコードくらいなら余裕)
- SQLiteに全文検索の機能が無いのか?
- N-gram(とりあえず20)で、インデックス作ってみた。けど、それだとINSERTだけでとてつもない時間がかかる。(元は50文字×1万レコードをN-gram用のINDEXを作ると10分とか…)
- TEXTに対してINDEXを張ると、ページリロード後に「no such collation sequence」っていうエラーが出た。brazilさんとこでVACUUMすると防げると書いてあったので、とりあえず、windowのunloadイベントでVACUUMにしておいた。けど、テーブルのレコードが大きければVACUUMにかかるコストも馬鹿にならないので、なんか他の方法が無いかも探さねば…