Поиск — это [[Основные плагины|основной плагин]], который помогает находить данные в вашем хранилище Obsidian с помощью поисковых запросов и операторов для сужения результатов.
По умолчанию поиск доступен на левой боковой панели ![[lucide-search.svg#icon]]. Также можно открыть поиск, нажав `Ctrl+Shift+F` (Windows/Linux) или `Command+Shift+F` (macOS).
- **Поиск выделенного текста**: если вы выделите текст в редакторе и откроете поиск с помощью сочетания клавиш, поиск покажет результаты для выделенного текста.
- **Поиск по недавним запросам**: откройте поиск с пустым поисковым запросом, чтобы увидеть список недавних поисковых запросов. Нажмите на любой из них, чтобы использовать этот запрос снова.
> [!info] Исключённые файлы и папки
> Файлы, соответствующие шаблонам [[Настройки#Исключённые файлы и папки|Исключённых файлов и папок]], не будут отображаться в результатах поиска.
## Поисковые запросы
Поисковый запрос — это слово или фраза, которую вы вводите в поле поиска. Умение правильно составлять поисковые запросы поможет быстро находить нужную информацию даже в больших хранилищах. Obsidian выполняет поиск только по содержимому заметок и холстов.
> [!tip]- Поиск по путям и именам файлов
> По умолчанию вы можете искать только по путям и именам файлов заметок и холстов. Чтобы найти путь или имя любого файла в хранилище, используйте оператор `path` или `file`.
Каждое слово в поисковом запросе сопоставляется независимо в каждом файле. Чтобы найти точную фразу, заключите её в кавычки, например `"star wars"`. Чтобы искать текст в кавычках внутри точной фразы, можно _экранировать_ кавычки, добавив обратную косую черту (`\`) перед ними, например `"they said \"hello\" to each other"`.
Вы можете управлять тем, возвращать ли файлы, содержащие _все_ слова из вашего запроса, или _любое_ из них:
- `meeting work` возвращает файлы, содержащие и `meeting`, и `work`.
- `meeting OR work` возвращает файлы, содержащие `meeting` или `work`.
Вы даже можете комбинировать оба варианта в одном запросе.
- `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`.<p/>Пример: `line:(mix flour)`.<p/><br>**Примечание**: использование `-line` инвертирует поиск, то есть находит файлы, в которых ни одна строка не соответствует `x`. |
| `block:` | Поиск совпадений в одном блоке.<p/>Пример: `block:(dog cat)`.<p/>**Примечание**: поскольку `block:` требует от поиска анализа Markdown-содержимого каждого файла, выполнение запроса может занять больше времени. |
| `section:` | Поиск совпадений в одном разделе (текст между двумя заголовками).<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}/` соответствует дате в формате ISO 8601, например 2022-01-01.
Вы даже можете комбинировать регулярные выражения с операторами поиска:
- `path:/\d{4}-\d{2}-\d{2}/` возвращает файлы, в пути которых содержится дата.
Для получения дополнительной информации о написании регулярных выражений обратитесь к [практическому руководству по Regex](https://www.freecodecamp.org/news/practical-regex-guide-with-real-life-examples/) от FreeCodeCamp или к разделу [Регулярные выражения](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) от Mozilla.
> [!info]+ Регулярные выражения в формате JavaScript
> Регулярные выражения бывают разных видов, которые могут отличаться друг от друга. Obsidian использует регулярные выражения в формате JavaScript.
## Настройка параметров поиска
Для настройки поиска нажмите **Настройки поиска** ![[lucide-sliders-horizontal.svg#icon]] в правой части строки поиска, чтобы увидеть переключатели.
| Настройка | Описание |
|----------------------------------|-----------------------------------------------------------------------------|
| **Объяснить поисковый запрос** | Разбирает поисковый запрос и объясняет его простым текстом. |
| **Свернуть результаты** | Переключает отображение контекста поиска. |
| **Развернуть контекст** | Расширяет результат поиска, показывая больше текста вокруг совпадения. |
## Встраивание результатов поиска в заметку
Чтобы встроить результаты поиска в заметку, добавьте блок кода `query`:
````
```query
embed OR search
```
````
[[Введение в Obsidian Publish|Obsidian Publish]] не поддерживает встроенные [[Ограничения Publish#Поиск|результаты поиска]]. Чтобы увидеть живой пример, используйте приведённый выше блок кода в вашем хранилище.
![[search-query-rendered.png]]