## 関連Issue https://github.com/tadashi-aikawa/obsidian-another-quick-switcher/issues/102 ## 調査 `matcher.ts`の`matchQuery`の処理を分析する。 1. `#`からクエリが始まるか? 1. タグのマッチ判定のみして終了 2. `/`区切りからディレクトリ部分を見極め、クエリディレクトリに含まれていないか? 1. 含まれていないなら終了 3. ファイル名のいずれかの単語がクエリと `smartEquals` か? 1. `smartEquals`なら`word-perfect`を追加 (継続) 4. ファイル名とエイリアスそれぞれに対して、クエリと`smartStartsWith` or `smartIncludes`か? 1. `smartStartsWith`なら`prefix-name`を追加 (継続) 1. `smartIncludes`なら`name`を追加 (継続) 5. ファイルのparentがクエリに`smartIncludes`か? 1. `smartIncludes`なら`directory`を追加 (継続) 6. あとはheader, link, tagでそれぞれ続く... 改善できるとしたら4のフェーズ。ファイル名が1、エイリアスが2ある場合 - `smartStartsWith`は3回実行される - `smartIncludes`は3回実行される これに`smartFuzzyMatch`をあわせると | | startsWith | includes | fuzzy | | ---------- | ------------------ | ------------------ | -------- | | startsWith | - | 必ずtrue | 必ずtrue | | includes | trueの可能性もある | - | 必ずtrue | | fuzzy | trueの可能性もある | trueの可能性もある | - | となるのでこの3段階で評価できれば `results.push` はできるはず ## パフォーマンス ### 現行 ``` Get suggestions: (File name search): 38[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: (File name search): 5[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: a (File name search): 32[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: an (File name search): 26[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: ano (File name search): 20[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anot (File name search): 19[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anoth (File name search): 17[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anothe (File name search): 20[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another (File name search): 18[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another (File name search): 18[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another q (File name search): 32[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another qu (File name search): 29[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another qui (File name search): 32[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another quic (File name search): 31[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another quick (File name search): 32[ms] ``` ``` Get suggestions: (File name search): 39[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: (File name search): 5[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: a (File name search): 28[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: an (File name search): 21[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: ano (File name search): 22[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anot (File name search): 18[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anoth (File name search): 16[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: anothe (File name search): 20[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another (File name search): 16[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another (File name search): 21[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another q (File name search): 32[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another qu (File name search): 31[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another qui (File name search): 31[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another quic (File name search): 32[ms] plugin:obsidian-another-quick-switcher:2777 Get suggestions: another quick (File name search): 35[ms] ``` ### 改修後 全体的に30以内くらいに収まっているので大きなデグレはないはず。。