From e374e3abd42c1719ad1fdc6bd9c641efb2ddf954 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Tue, 22 Nov 2022 07:36:27 +0000
Subject: [PATCH] fix: jump to search for operand
---
assets/js/semantic-search.js | 4 ++--
assets/js/full-text-search.js | 2 +-
assets/js/util.js | 26 ++++++++++++++------------
layouts/partials/head.html | 2 ++
4 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/assets/js/full-text-search.js b/assets/js/full-text-search.js
index a8f7f23..108db10 100644
--- a/assets/js/full-text-search.js
+++ b/assets/js/full-text-search.js
@@ -56,6 +56,6 @@
}
const allIds = new Set([...getByField("title"), ...getByField("content")])
const finalResults = [...allIds].map(formatForDisplay)
- displayResults(finalResults, true)
+ displayResults(term, finalResults, true)
})
})()
diff --git a/assets/js/semantic-search.js b/assets/js/semantic-search.js
index bfe102e..fca2851 100644
--- a/assets/js/semantic-search.js
+++ b/assets/js/semantic-search.js
@@ -24,7 +24,7 @@
},
body: JSON.stringify({
query: query,
- limit: 8,
+ limit: 10,
}),
})
if (result.ok) {
@@ -48,7 +48,7 @@
debounce((e) => {
let term = e.target.value
if (term !== "") {
- searchContents(term).then((results) => displayResults(results))
+ searchContents(term).then((results) => displayResults(term, results))
}
}),
)
diff --git a/assets/js/util.js b/assets/js/util.js
index 06db3c1..d17594a 100644
--- a/assets/js/util.js
+++ b/assets/js/util.js
@@ -115,9 +115,11 @@
}
const redir = (id, term) => {
- // SPA navigation
+ const shouldTrim = PRODUCTION && SEARCH_ENABLED
+ const baseURLPrefix = shouldTrim ? "" : BASE_URL.replace(/\/$/g, "")
+ const urlString = `${baseURLPrefix}${id}#:~:text=${encodeURIComponent(term)}/`
window.Million.navigate(
- new URL(`${BASE_URL.replace(/\/$/g, "")}${id}#:~:text=${encodeURIComponent(term)}/`),
+ new URL(urlString),
".singlePage",
)
closeSearch()
@@ -179,7 +181,7 @@
})
}
-const displayResults = (finalResults, extractHighlight = false) => {
+const displayResults = (term, finalResults, extractHighlight = false) => {
const results = document.getElementById("results-container")
if (finalResults.length === 0) {
results.innerHTML = `<button class="result-card">
@@ -189,16 +191,16 @@
} else {
results.innerHTML = finalResults
.map((result) => {
- if (extractHighlight) {
- return resultToHTML({
- url: result.url,
- title: highlight(result.title, term),
- content: highlight(removeMarkdown(result.content), term)
- })
- } else {
- return resultToHTML(result)
- }
+ if (extractHighlight) {
+ return resultToHTML({
+ url: result.url,
+ title: highlight(result.title, term),
+ content: highlight(removeMarkdown(result.content), term)
+ })
+ } else {
+ return resultToHTML(result)
}
+ }
)
.join("\n")
const anchors = [...document.getElementsByClassName("result-card")]
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index 59b228a..ba18b4c 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -79,6 +79,8 @@
"indices/contentIndex.json" | resources.Fingerprint "md5" | resources.Minify
}}
<script>
+ const SEARCH_ENABLED = {{.Site.Data.config.search.enableSemanticSearch}}
+ const PRODUCTION = {{ hugo.IsProduction }}
const BASE_URL = {{.Site.BaseURL}}
const fetchData = Promise.all([
fetch("{{ $linkIndex.Permalink }}")
--
Gitblit v1.10.0