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