検索は、検索語と演算子を使用して結果を絞り込み、Obsidian保管庫内のデータを見つけるための[[コアプラグイン]]です。
デフォルトでは、左サイドバー( ![[lucide-search.svg#icon]] )に検索があります。また、`Ctrl+Shift+F`(Windows/Linux)または`Command+Shift+F`(macOS)を押して検索を開くこともできます。
- **選択テキストの検索**: エディタでテキストを選択してからキーボードショートカットで検索を開くと、選択したテキストの検索結果が表示されます。
- **最近の検索語を検索**: 検索語を空のまま検索を開くと、最近の検索語が一覧表示されます。いずれかをクリックすると、その検索語を再利用できます。
> [!info] 除外ファイル
> [[設定#除外ファイル|除外ファイル]]のパターンに一致するファイルは検索結果に表示されません。
## 検索語
検索語とは、検索フィールドに入力する単語またはフレーズのことです。検索語を効果的に書く方法を学ぶことで、大規模な保管庫でも素早く目的のものを見つけることができます。Obsidianはノートと Canvas のコンテンツのみを検索します。
> [!tip]- パスとファイル名の検索
> デフォルトでは、ノートと Canvas のパスとファイル名のみを検索できます。保管庫内の任意のファイルのパスやファイル名を検索するには、`path`または`file`演算子を使用してください。
検索語の各単語は、各ファイル内で独立してマッチングされます。完全一致のフレーズを検索するには、引用符で囲みます。例: `"star wars"`。完全一致フレーズ内の引用符付きテキストを検索するには、引用符の前にバックスラッシュ(`\`)を付けて_エスケープ_します。例: `"they said \"hello\" to each other"`。
検索語の_すべて_の単語を含むファイルを返すか、_いずれか_の単語を含むファイルを返すかを制御できます:
- `meeting work` は`meeting`と`work`の両方を含むファイルを返します。
- `meeting OR work` は`meeting`または`work`のいずれかを含むファイルを返します。
同じ検索語でこの2つを組み合わせることもできます。
- `meeting work OR meetup personal` は仕事のミーティングと個人的なミートアップのファイルを返します。
括弧を使って各式の優先順位を制御できます。
- `meeting (work OR meetup) personal` は`meeting`、`personal`、および`work`か`meetup`のいずれかを含むファイルを返します。
検索結果から単語を除外(否定)するには、単語の前にハイフン(`-`)を付けます:
- `meeting -work` は`meeting`を含むが`work`を含まないファイルを返します。
複数の式を除外できます:
- `meeting -work -meetup` は`meeting`を含むが`work`や`meetup`を含まないファイルを返します。
括弧を使って式の組み合わせを除外できます:
- `meeting -(work meetup)` は`meeting`を含むが`work`と`meetup`の_両方_を含まないファイルを返します。
小なり(`<`)や大なり(`>`)演算子を使って結果をフィルタリングするには、角括弧(`[]`)または引用符(`""`)で囲みます:
- `meeting [duration:<5]` はmeetingが存在し、durationが5未満のファイルを返します。
- `meeting [duration:>5]` はmeetingが存在し、durationが5より大きいファイルを返します。
> [!tip]- 検索語の説明
> 複雑な検索語のトラブルシューティングが必要な場合、検索で**検索語の説明**をクリックすると、検索語の説明が表示されます。
## 検索演算子
検索演算子を使用すると、より細かい検索語を指定して結果をさらに絞り込むことができます。
一部の演算子では、括弧内にネストされた検索語を追加できます。例: `task:(call OR email)`。
| 検索演算子 | 説明 |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `file:` | ファイル名のテキストを検索します。保管庫内の任意のファイルにマッチします。<p/>例: `file:.jpg` または `file:202209`。 |
| `path:` | ファイルパスのテキストを検索します。保管庫内の任意のファイルにマッチします。<p/>例: `path:"Daily notes/2022-07"`。 |
| `content:` | ファイルコンテンツのテキストを検索します。<p/>例: `content:"happy cat"`。 |
| `match-case:` | 大文字/小文字を区別してマッチングします。<p/>例: `match-case:HappyCat`。 |
| `ignore-case:` | 大文字/小文字を区別せずにマッチングします。<p/>例: `ignore-case:ikea`。 |
| `tag:` | ファイル内のタグを検索します。<p/>例: `tag:#work`。<p/>`tag:#work`で検索しても`#myjob/work`の結果は返されないことに注意してください。<br /><br />**注意**: `tag:`はコードブロック内および非Markdownコンテンツ内のマッチを無視するため、`#work`の通常の全文検索よりも高速で正確であることが多いです。 |
| `line:` | `x`にマッチする行を少なくとも1行含むファイルを検索します。<p/>例: `line:(mix flour)`。<p/><br>**注意:** `-line`を使用すると検索が否定され、`x`にマッチする行がないファイルが検索されます。 |
| `block:` | 同じブロック内のマッチを検索します。<p/>例: `block:(dog cat)`。<p/>**注意**: `block:`はすべてのファイルのMarkdownコンテンツを検索がパースする必要があるため、検索語の処理に時間がかかることがあります。 |
| `section:` | 同じセクション(2つの見出し間のテキスト)内のマッチを検索します。<p/>例: `section:(dog cat)`。 |
| `task:` | ブロック単位で[[基本的な書式構文#タスクリスト\|タスク]]内のマッチを検索します。<p/>例: `task:call`。 |
| `task-todo:` | ブロック単位で*未完了*の[[基本的な書式構文#タスクリスト\|タスク]]内のマッチを検索します。<p/>例: `task-todo:call`。 |
| `task-done:` | ブロック単位で*完了済み*の[[基本的な書式構文#タスクリスト\|タスク]]内のマッチを検索します。<p/>例: `task-done:call`。 |
## プロパティの検索
[[プロパティ]]に保存されたデータを検索語で使用できます。
プロパティ名を角括弧で囲んで`[property]`とすると、そのプロパティを持つファイルが返されます:
- `[aliases]`は`aliases`プロパティを含むファイルを返します
角括弧とコロン`[property:value]`を使うと、そのプロパティと値を持つファイルが返されます:
- `[aliases:Name]`は`aliases`プロパティの値が`Name`であるファイルを返します
値として`null`を使用すると、値が設定されていないプロパティを検索できます:
- `[aliases:null]`は`aliases`プロパティが存在するが値が設定されていないファイルを返します
> [!info]+ 空の値
> `null`演算子はプロパティが空の場合(例: `aliases: `)に機能しますが、プロパティに空の引用符(`""`)や空の角括弧(`[]`)が含まれている場合は機能しません。
プロパティと値の両方で、グループ化の括弧、`OR`演算子、完全一致の二重引用符、正規表現などのサブクエリが使用できます。
- `[status:Draft OR Published]`は`status`プロパティの値が`Draft`または`Published`であるファイルを返します
## 大文字/小文字の区別を変更する
デフォルトでは、検索語は大文字と小文字を区別しません。検索語の正確な大文字/小文字で検索したい場合は、検索バー内の**大文字/小文字を区別**( ![[obsidian-icon-upper-lowercase.svg#icon]] )を選択してください。
この設定は切り替え可能です。**大文字/小文字を区別**アイコンがハイライトされている場合、現在大文字/小文字を区別する検索を行っていることを意味します。
## 結果の並べ替え順を変更する
1. [[#検索語|検索語]]を入力します。
2. 検索フィールドの下で、右側のドロップダウンを選択します。
3. 希望する並べ替え順を選択します。デフォルトは「ファイル名 (アルファベット順)」です。
以下のオプションが使用できます:
- ファイル名 (アルファベット順)
- ファイル名 (アルファベット逆順)
- 更新日 (新しい順)
- 更新日 (古い順)
- 作成日 (新しい順)
- 作成日 (古い順)
## 検索結果をコピーする
1. [[#検索語|検索語]]を入力します。
2. 検索フィールドの下で、結果数の横にある三点アイコンを選択します。
3. **検索結果をコピー**を選択します。
## 正規表現を使用する
正規表現は、テキストパターンを記述する文字のセットです。検索語で正規表現を使用するには、式をスラッシュ(`/`)で囲みます。
- `/\d{4}-\d{2}-\d{2}/` は2022-01-01のようなISO 8601日付にマッチします。
正規表現を検索演算子と組み合わせることもできます:
- `path:/\d{4}-\d{2}-\d{2}/` はファイルパスに日付を含むファイルを返します。
正規表現の書き方の詳細については、FreeCodeCampの[Practical Regex guide](https://www.freecodecamp.org/news/practical-regex-guide-with-real-life-examples/)またはMozillaの[Regular expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)を参照してください。
> [!info]+ JavaScriptフレーバーの正規表現
> 正規表現にはさまざまなフレーバーがあり、見た目が異なる場合があります。ObsidianはJavaScriptフレーバーの正規表現を使用しています。
## 検索設定を設定する
検索を設定するには、検索バーの右側にある**検索設定**( ![[lucide-sliders-horizontal.svg#icon]] )を選択してトグルを表示します。
| 設定 | 説明 |
|-------------------------|-----------------------------------------------------------------------------|
| **検索語の説明** | 検索語を分解してプレーンテキストで説明します。 |
| **検索結果を折りたたむ** | 検索コンテキストを表示するかどうかを切り替えます。 |
| **前後を表示** | 検索結果を展開して、マッチの前後のテキストをより多く表示します。 |
## ノートに検索結果を埋め込む
ノートに検索結果を埋め込むには、`query`コードブロックを追加します:
````
```query
embed OR search
```
````
[[Obsidian Publishの概要|Obsidian Publish]]は埋め込み[[Publishの制限事項#検索|検索結果]]をサポートしていません。ライブレンダリングの例を見るには、保管庫内で上記のコードブロックを使用してください。
![[search-query-rendered.png]]