| | |
| | | --- |
| | | title: Full-text Search |
| | | tags: |
| | | - component |
| | | --- |
| | | |
| | | Full-text search in Quartz is powered by [Flexsearch](https://github.com/nextapps-de/flexsearch). It's fast enough to return search results in under 10ms for Quartzs as large as half a million words. |
| | | |
| | | It can be opened by either clicking on the search bar or pressing ⌘+K. The top 5 search results are shown on each query. Matching subterms are highlighted and the most relevant 30 words are excerpted. Clicking on a search result will navigate to that page. |
| | | |
| | | This component is also keyboard accessible: Tab and Shift+Tab will cycle forward and backward through search results and Enter will navigate to the highlighted result (first result by default). |
| | | |
| | | > [!info] |
| | | > Search requires the `ContentIndex` emitter plugin to be present in the [[configuration]]. |
| | | |
| | | ### Indexing Behaviour |
| | | |
| | | By default, it indexes every page on the site with **Markdown syntax removed**. This means link URLs for instance are not indexed. |
| | | |
| | | It properly tokenizes Chinese, Korean, and Japenese characters and constructs separate indexes for the title and content, weighing title matches above content matches. |
| | | |
| | | ## Customization |
| | | |
| | | - Removing search: delete all usages of `Component.Search()` from `quartz.layout.ts`. |
| | | - Component: `quartz/components/Search.tsx` |
| | | - Style: `quartz/components/styles/search.scss` |
| | | - Script: `quartz/components/scripts/search.inline.ts` |
| | | - You can edit `contextWindowWords` or `numSearchResults` to suit your needs |