Jacky Zhao
2022-08-01 6dd4c64a4c09eed71718fe67491dda95f286d345
fix: highlights being stripped in non-semantic search mode
1 files modified
12 ■■■■ changed files
assets/js/util.js 12 ●●●● patch | view | raw | blame | history
assets/js/util.js
@@ -55,16 +55,17 @@
const highlight = (content, term) => {
  const highlightWindow = 20
  // try to find direct match first
  const directMatchIdx = content.indexOf(term)
  if (directMatchIdx !== -1) {
    const h = highlightWindow / 2
    console.log(directMatchIdx)
    const h = highlightWindow
    const before = content.substring(0, directMatchIdx).split(" ").slice(-h)
    const after = content
      .substring(directMatchIdx + term.length, content.length - 1)
      .substring(directMatchIdx + term.length, content.length - 2)
      .split(" ")
      .slice(0, h)
    console.log(before, after)
    return (
      (before.length == h ? `...${before.join(" ")}` : before.join(" ")) +
      `<span class="search-highlight">${term}</span>` +
@@ -109,10 +110,9 @@
// Common utilities for search
const resultToHTML = ({ url, title, content }) => {
  const cleaned = removeMarkdown(content)
  return `<button class="result-card" id="${url}">
      <h3>${title}</h3>
      <p>${cleaned}</p>
      <p>${content}</p>
  </button>`
}
@@ -195,7 +195,7 @@
            return resultToHTML({
              url: result.url,
              title: highlight(result.title, term),
              content: highlight(result.content, term)
              content: highlight(removeMarkdown(result.content), term)
            })
          } else {
            return resultToHTML(result)