migemoの高速化
- 切り替えるの面倒だよね。自動化したい。
- 入力が500msくらい途切れたら自動でmigemo検索を実行
- インクリメンタルじゃないけど…実用的にはこれでいいかも
- インデックス時に日本語を含むかどうかのフラグを立てておき、立ってるものだけmigemoを使う
- 1文字手前の検索結果から絞り込んで検索する
- URLのタイトル名にだけ使う
全体の高速化
- RegexOptions.Compiledを試してみる
- 先頭・末尾に追記したときは、1回前の検索結果から絞り込む
- 末尾の文字を消した場合は、1回前の検索結果をレストア
- 途中に追記した場合は、結果が増えることがあるので再検索
- もっと汎用的に、文字列 -> 検索結果のハッシュを持てばいいのか
- DEBUG時は、全体から検索した場合と結果が一致するかassertしよう
設計見直し
そろそろリファクタの時期。いろいろネタ出し。
- ソートはstatic, dynamicに分ける
- static: インデックス作成時のソート
- dynamic: 検索結果に対するソート
- 高速でないといけない。ユーザー入力をヒントに使える。
- staticソートの結果を無駄にしないアルゴリズムがよい。
- dynamicソートアルゴリズム
- ファイル名に完全一致したものは上に持ってくる
- migemoモード時、日本語でヒットしたものは上に持ってくる
- ビジュアライザ
- Path, URIから、画面に表示する文字列を求めるもの
- 画面表示されるアイテムに対してだけ呼ばれる。低速でいい。
コンフィグ
- ダイアログの内容を丸ごとシリアライズする方法ないかな
その他
- アイテム追加のスレッド化
- PriorityQueueを使うと終わったころにはソート済み
|