การค้นหาเป็น[[ปลั๊กอินหลัก|ปลั๊กอินหลัก]]ที่ช่วยให้คุณค้นหาข้อมูลในห้องนิรภัย Obsidian ของคุณโดยใช้คำค้นหาและตัวดำเนินการเพื่อจำกัดผลลัพธ์ให้แคบลง
ตามค่าเริ่มต้น คุณสามารถค้นหาการค้นหาได้ในแถบด้านข้างซ้าย ![[lucide-search.svg#icon]] คุณยังสามารถเปิดการค้นหาโดยกด `Ctrl+Shift+F` (Windows/Linux) หรือ `Command+Shift+F` (macOS)
- **ค้นหาข้อความที่เลือก**: หากคุณเลือกข้อความในเอดิเตอร์แล้วเปิดการค้นหาด้วยแป้นพิมพ์ลัด การค้นหาจะแสดงผลลัพธ์สำหรับข้อความที่เลือก
- **ค้นหาคำค้นหาล่าสุด**: เปิดการค้นหาโดยไม่มีคำค้นหาเพื่อแสดงรายการคำค้นหาล่าสุด คลิกที่คำใดก็ได้เพื่อใช้คำค้นหานั้นอีกครั้ง
> [!info] ไฟล์ที่ไม่รวม
> ไฟล์ที่ตรงกับรูปแบบ[[การตั้งค่า#ไฟล์ที่ไม่รวม|ไฟล์ที่ไม่รวม]]ของคุณจะไม่ปรากฏในผลการค้นหา
## คำค้นหา
คำค้นหาคือคำหรือวลีที่คุณป้อนในช่องค้นหา การเรียนรู้วิธีเขียนคำค้นหาอย่างมีประสิทธิภาพสามารถช่วยให้คุณค้นพบสิ่งที่ต้องการได้อย่างรวดเร็ว แม้ในห้องนิรภัยขนาดใหญ่ Obsidian จะค้นหาเฉพาะเนื้อหาของโน้ตและผืนผ้าใบเท่านั้น
> [!tip]- การค้นหาเส้นทางและชื่อไฟล์
> ตามค่าเริ่มต้น คุณสามารถค้นหาเส้นทางและชื่อไฟล์ของโน้ตและผืนผ้าใบเท่านั้น หากต้องการค้นหาเส้นทางหรือชื่อไฟล์ของไฟล์ใดก็ได้ในห้องนิรภัย ให้ใช้ตัวดำเนินการ `path` หรือ `file`
แต่ละคำในคำค้นหาจะถูกจับคู่แยกกันภายในแต่ละไฟล์ หากต้องการค้นหาวลีที่ตรงทั้งหมด ให้ใส่เครื่องหมายคำพูดล้อมรอบ เช่น `"star wars"` หากต้องการค้นหาข้อความที่มีเครื่องหมายคำพูดภายในวลีที่ตรงทั้งหมด คุณสามารถ _escape_ เครื่องหมายคำพูดโดยเพิ่มแบ็กสแลช (`\`) ไว้หน้าเครื่องหมายคำพูด เช่น `"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}/` ส่งคืนไฟล์ที่มีวันที่ในเส้นทางไฟล์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเขียนนิพจน์ทั่วไป โปรดดูที่ [คู่มือ Regex เชิงปฏิบัติ](https://www.freecodecamp.org/news/practical-regex-guide-with-real-life-examples/) ของ FreeCodeCamp หรือ [Regular expressions](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]]