docs: add documentation for Operand Search, remove debounce

This commit is contained in:
Jacky Zhao 2022-07-31 18:02:06 -07:00
parent c30c823253
commit 16f571fcf9
6 changed files with 63 additions and 21 deletions

View File

@ -15,15 +15,7 @@ async function searchContents(query) {
return (await response.json()); return (await response.json());
} }
function debounce(func, timeout = 300) { registerHandlers((e) => {
let timer;
return (...args) => {
clearTimeout(timer)
timer = setTimeout(() => { func.apply(this, args); }, timeout)
};
}
registerHandlers(debounce((e) => {
term = e.target.value term = e.target.value
if (term !== "") { if (term !== "") {
searchContents(term) searchContents(term)
@ -35,4 +27,4 @@ registerHandlers(debounce((e) => {
)) ))
.then(results => displayResults(results)) .then(results => displayResults(results))
} }
})) })

View File

@ -4,8 +4,8 @@ title: 🪴 Quartz 3.2
Host your second brain and [digital garden](https://jzhao.xyz/posts/networked-thought) for free. Quartz features Host your second brain and [digital garden](https://jzhao.xyz/posts/networked-thought) for free. Quartz features
1. Extremely fast full-text search by pressing `Ctrl` + `k` 1. Extremely fast natural-language [[notes/search|search]]
2. Customizable and hackable design based on Hugo 2. Customizable and hackable design based on [Hugo](https://gohugo.io/)
3. Automatically generated backlinks, link previews, and local graph 3. Automatically generated backlinks, link previews, and local graph
4. Built-in [[notes/CJK + Latex Support (测试) | CJK + Latex Support]] and [[notes/callouts | Admonition-style callouts]] 4. Built-in [[notes/CJK + Latex Support (测试) | CJK + Latex Support]] and [[notes/callouts | Admonition-style callouts]]
5. Support for both Markdown Links and Wikilinks 5. Support for both Markdown Links and Wikilinks

View File

@ -52,14 +52,16 @@ enableContextualBacklinks: true
# whether to show a section of recent notes on the home page # whether to show a section of recent notes on the home page
enableRecentNotes: false enableRecentNotes: false
# whether to display and 'edit' button next to the last edited field # whether to display an 'edit' button next to the last edited field
# that links to github # that links to github
enableGitHubEdit: true enableGitHubEdit: true
GitHubLink: https://github.com/jackyzha0/quartz/tree/hugo/content GitHubLink: https://github.com/jackyzha0/quartz/tree/hugo/content
# whether to use Operand to power semantic search # whether to use Operand to power semantic search
enableSemanticSearch: true # IMPORTANT: replace this API key with your own if you plan on using
operandApiKey: "1e47d93b-1468-45b7-98d5-7f733d5e45e2" # Operand search!
enableSemanticSearch: false
operandApiKey: "REPLACE-WITH-YOUR-OPERAND-API-KEY"
# page description used for SEO # page description used for SEO
description: description:
@ -79,7 +81,6 @@ links:
``` ```
### Code Block Titles ### Code Block Titles
To add code block titles with Quartz: To add code block titles with Quartz:
1. Ensure that code block titles are enabled in Quartz's configuration: 1. Ensure that code block titles are enabled in Quartz's configuration:
@ -142,7 +143,6 @@ attribute, are relative to the `static/` directory.
### Graph View ### Graph View
To customize the Interactive Graph view, you can poke around `data/graphConfig.yaml`. To customize the Interactive Graph view, you can poke around `data/graphConfig.yaml`.
```yaml {title="data/graphConfig.yaml"} ```yaml {title="data/graphConfig.yaml"}
# if true, a Global Graph will be shown on home page with full width, no backlink. # if true, a Global Graph will be shown on home page with full width, no backlink.
# A different set of Local Graphs will be shown on sub pages. # A different set of Local Graphs will be shown on sub pages.

View File

@ -12,7 +12,7 @@ Note that both of these steps need to be completed.
## Install `hugo-obsidian` ## Install `hugo-obsidian`
This step will generate the list of backlinks for Hugo to parse. Ensure you have [Go](https://golang.org/doc/install) (>= 1.16) installed. This step will generate the list of backlinks for Hugo to parse. Ensure you have [Go](https://golang.org/doc/install) (>= 1.16) installed.
```shell ```bash
# Install and link `hugo-obsidian` locally # Install and link `hugo-obsidian` locally
go install github.com/jackyzha0/hugo-obsidian@latest go install github.com/jackyzha0/hugo-obsidian@latest
``` ```
@ -24,7 +24,7 @@ Afterwards, start the Hugo server as shown above and your local backlinks and in
## Installing Hugo ## Installing Hugo
Hugo is the static site generator that powers Quartz. [Install Hugo with "extended" Sass/SCSS version](https://gohugo.io/getting-started/installing/) first. Then, Hugo is the static site generator that powers Quartz. [Install Hugo with "extended" Sass/SCSS version](https://gohugo.io/getting-started/installing/) first. Then,
``` ```bash
# Navigate to your local Quartz folder # Navigate to your local Quartz folder
cd <location-of-your-local-quartz> cd <location-of-your-local-quartz>

50
content/notes/search.md Normal file
View File

@ -0,0 +1,50 @@
---
title: "Search"
---
Quartz supports two modes of searching through content.
## Full-text
Full-text search is the default in Quartz. It produces results that *exactly* match the search query. This is easier to setup but usually produces lower quality matches.
```yaml {title="data/config.yaml"}
# the default option
enableSemanticSearch: false
```
## Natural Language
Natural language search is powered by [Operand](https://operand.ai/). It understands language like a person does and finds results that best match user intent. In this sense, it is closer to how Google Search works.
Natural language search tends to produce higher quality results than full-text search.
Here's how to set it up.
1. Create an Operand Account on [their website](https://operand.ai/).
2. Go to Dashboard > Settings > Integrations.
3. Follow the steps to setup the GitHub integration. Operand needs access to GitHub in order to index your digital garden properly!
4. Head over to Dashboard > Objects and press `(Cmd + K)` to open the omnibar and select 'Create Collection'.
1. Set the 'Collection Label' to something that will help you remember it.
2. You can leave the 'Parent Collection' field empty.
5. Click into your newly made Collection.
1. Press the 'share' button that looks like three dots connected by lines.
2. Set the 'Interface Type' to `object-search` and click 'Create'.
3. This will bring you to a new page with a search bar. Ignore this for now.
6. Go back to Dashboard > Settings > API Keys and find your Quartz-specific Operand API key under 'Other keys'.
1. Copy the key (which looks something like `0e733a7f-9b9c-48c6-9691-b54fa1c8b910`).
2. Open `data/config.yaml`. Set `enableSemanticSearch` to `true` and `operandApiKey` to your copied key.
```yaml {title="data/config.yaml"}
# the default option
enableSemanticSearch: true
operandApiKey: "0e733a7f-9b9c-48c6-9691-b54fa1c8b910"
```
7. Make a commit and push your changes to GitHub. See the [[notes/hosting|hosting]] page if you haven't done this already.
1. This step is *required* for Operand to be able to properly index your content.
2. Head over to Dashboard > Objects and select the collection that you made earlier
8. Press `(Cmd + K)` to open the omnibar again and select 'Create GitHub Repo'
1. Set the 'Repository Label' to `Quartz`
2. Set the 'Repository Owner' to your GitHub username
3. Set the 'Repository Ref' to `master`
4. Set the 'Repository Name' to the name of your repository (usually just `quartz` if you forked the repository without changing the name)
5. Leave 'Root Path' and 'Root URL' empty
9. Wait for your repository to index and enjoy natural language search in Quartz!

View File

@ -12,8 +12,8 @@ enableContextualBacklinks: true
enableRecentNotes: false enableRecentNotes: false
enableGitHubEdit: true enableGitHubEdit: true
GitHubLink: https://github.com/jackyzha0/quartz/tree/hugo/content GitHubLink: https://github.com/jackyzha0/quartz/tree/hugo/content
enableSemanticSearch: true enableSemanticSearch: false
operandApiKey: "1e47d93b-1468-45b7-98d5-7f733d5e45e2" operandApiKey: "REPLACE-WITH-YOUR-OPERAND-API-KEY"
description: description:
Host your second brain and digital garden for free. Quartz features extremely fast full-text search, Host your second brain and digital garden for free. Quartz features extremely fast full-text search,
Wikilink support, backlinks, local graph, tags, and link previews. Wikilink support, backlinks, local graph, tags, and link previews.