## 関連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以内くらいに収まっているので大きなデグレはないはず。。