fix(search): transform contents before indexing

Resolves WEB-21
This commit is contained in:
taskylizard 2024-08-05 04:04:10 +00:00
parent 3791f3f6d8
commit 7d63a3025a
No known key found for this signature in database
GPG key ID: 1820131ED1A24120
5 changed files with 24 additions and 7 deletions

1
.gitignore vendored
View file

@ -8,3 +8,4 @@ node_modules
.env
dist
.eslintcache
docs/.vitepress/.temp

View file

@ -27,7 +27,7 @@ export default defineConfig({
cleanUrls: true,
appearance: 'dark',
base: baseUrl,
srcExclude: ['readme.md', 'single-page'],
srcExclude: ['README.md', 'single-page'],
ignoreDeadLinks: true,
sitemap: {
hostname: meta.hostname

View file

@ -1,4 +1,5 @@
import type { DefaultTheme } from 'vitepress'
import { transform, transformGuide } from './transformer'
// @unocss-include
export const meta = {
@ -8,9 +9,9 @@ export const meta = {
keywords: ['stream', 'movies', 'gaming', 'reading', 'anime']
}
export const commitRef = process.env.CF_PAGES
? `<a href="https://github.com/fmhy/FMHYEdit/commit/${
process.env.CF_PAGES_COMMIT_SHA
export const commitRef =
process.env.CF_PAGES && process.env.CF_PAGES_COMMIT_SHA
? `<a href="https://github.com/fmhy/FMHYEdit/commit/${process.env.CF_PAGES_COMMIT_SHA
}">${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}</a>`
: 'dev'
@ -18,6 +19,15 @@ export const feedback = `<a href="/feedback" class="feedback-footer">Made with
export const search: DefaultTheme.Config['search'] = {
options: {
_render(src, env, md) {
let contents = src
// I do this as env.frontmatter is not available until I call `md.render`
if (contents.includes('Beginners Guide'))
contents = transformGuide(contents)
contents = transform(contents)
const html = md.render(contents, env)
return html
},
miniSearch: {
options: {
tokenize: (text) => text.split(/[\n\r #%*,=/:;?[\]{}()&]+/u), // simplified charset: removed [-_.@] and non-english chars (diacritics etc.)
@ -67,6 +77,8 @@ export const search: DefaultTheme.Config['search'] = {
.map((t) => t.toLowerCase())
// Downrank posts
if (documentId.match(/\/posts/)) return -5
// Downrank /other
if (documentId.match(/\/other/)) return -5
// Uprate if term appears in titles. Add bonus for higher levels (i.e. lower index)
const titleIndex =

View file

@ -244,6 +244,10 @@
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+');
}
.note.custom-block {
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+');
}
.tip.custom-block {
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWxpZ2h0YnVsYiI+PHBhdGggZD0iTTE1IDE0Yy4yLTEgLjctMS43IDEuNS0yLjUgMS0uOSAxLjUtMi4yIDEuNS0zLjVBNiA2IDAgMCAwIDYgOGMwIDEgLjIgMi4yIDEuNSAzLjUuNy43IDEuMyAxLjUgMS41IDIuNSIvPjxwYXRoIGQ9Ik05IDE4aDYiLz48cGF0aCBkPSJNMTAgMjJoNCIvPjwvc3ZnPg==');
}

View file

@ -166,7 +166,7 @@ function getHeader(id: string) {
return header
}
function transformGuide(text: string): string {
export function transformGuide(text: string): string {
const _text = text
.replace(/\[TOC\]\n/gm, '')
.replace(/\*\*Table of Contents\*\*\n\[TOC2\]\n/gm, '')
@ -192,7 +192,7 @@ function replaceUnderscore(text: string): string {
return text
}
function transform(text: string): string {
export function transform(text: string): string {
let _text = text
.replace(
/\*\*\[◄◄ Back to Wiki Index\]\(https:\/\/www\.reddit\.com\/r\/FREEMEDIAHECKYEAH\/wiki\/index\)\*\*\n/gm,