搜尋是一個[[核心外掛程式|核心外掛]],能夠透過搜尋詞和運算子來縮小範圍,幫助你在 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. 選取你想要的排序方式。預設為「按檔案名升冪排列 (A-Z)」。 可用的選項如下: - 按檔案名升冪排列 (A-Z) - 按檔案名降冪排列 (Z-A) - 按編輯時間排序(從新到舊) - 按編輯時間排序(從舊到新) - 按建檔時間排序(從新到舊) - 按建檔時間排序(從舊到新) ## 複製搜尋結果 1. 輸入[[#搜尋詞|搜尋詞]]。 2. 在搜尋欄位下方,選取結果數量旁的三點圖示。 3. 選取**複製搜尋結果**。 ## 使用正則表達式 正則表達式是一組描述文字模式的字元。若要在搜尋詞中使用正則表達式,請用正斜線(`/`)包圍表達式。 - `/\d{4}-\d{2}-\d{2}/` 比對 ISO 8601 日期,例如 2022-01-01。 你甚至可以將正則表達式與搜尋運算子組合使用: - `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]]