## モチベ
最近、『それを説明する言葉は出てくるけど単語が出てこない』ことが増えた。要因は色々あるかもしれないが、[[ノート]]の数が増えたり、[[Minerva]]の歴史が長くなってきていることも大きいと思う。
[[Obsidian]]の全文検索、[[Omnisearch]]、[[Grep (Another Quick Switcher)|Grep]]を使えば全文検索でひっかけることはできるが、それだと情報量が多すぎて時間もかかる。かといって、[[エイリアス (Obsidian)|エイリアス]]や[[タグ (Obsidian)|タグ]]に単語を説明するテキストを挿入するのは若干目的からずれているようにも思える。
そこで[[descriptionプロパティ (Obsidian)|descriptionプロパティ]]を検索する機能を[[🦉Another Quick Switcher]]で検討してみることにした。[[descriptionプロパティ (Obsidian)|descriptionプロパティ]]は[[Obsidian Publish]]でも有効活用でき、本来の用途にも一致するので自然な形で導入できる可能性が高い。
## 下調べ
方針は3通り。
(a). もしObsidianの内部で`description`の情報を持っているならそれを使う
(b). ↑がダメで、ファイル本文の情報をfileioなしで取得できるなら、ファイル本文からのdescription生成も検討する
(c). ↑がダメならdescriptionプロパティのみを検索対象とする
### aについて
ちゃんと調査していないので不明だが、恐らくないと思う。[[Obsidian Publish]]もリクエストされてから生成してそうだし、一括で生成するモチベがないから。
### bについて
以下の処理がfileioが走っているっぽく非常に重いので問題外。
```ts
await this.app.vault.cachedRead(f);
```
2回目以降はfileioが高速化するものの、それでも十分に遅かった。本文を読み込むにはfileioが不可欠なので、ここは[[🦉Another Quick Switcher]]の領域外な気がする。
### cについて
以下の処理が8522ファイルで5ms。
```ts
this.app.metadataCache.getFileCache(f)?.frontmatter?.description;
```
オプション指定のパフォーマンス劣化なら許容範囲。少なくともindexingとしては。
c案で進める。
## 対応
- [-] indexingにdescriptionプロパティを追加
- 既にfrontmatterを取得していたので不要 (包含されている)
- もしフィルタ時のパフォーマンス悪化が懸念されるなら再考する
- [x] searchBy設定にdescriptionを追加
- [x] descriptionプロパティを含めてフィルタ
- フィルタリングするプロパティを指定するインターフェースが必要
- 今回はkeyを指定せず、普通に絞り込みたい
- よって、特別なインターフェースが必要になる気がする
- **やっぱsearchBy = descriptionが妥当**
- [-] マッチしたdescriptionをあわせて表示
- 既に[[プロパティ (Obsidian)|プロパティ]]の値で表示するインターフェースがある...
- 今はignoreで除外する感じ
- 表示したくなければignoreすればいいからここはこれで十分
- [x] searchByにdescription指定されたときだけフィルタ
- せっかくだから[[プロパティ (Obsidian)|プロパティ]]を対象にしたい...
- [x] フィルタリングするプロパティのkey一覧設定を追加
- [x] ↑を流し込んでフィルタリングできるようにする
- [x] 10.1.0-beta1のリリース
- [x] priorityの追加についても示準
- [x] `npm run prepare`が実行されなかった?
- [ ] priorityにproperty matchを追加