Serĉo
Xingluo integras Flexsearch por klientflanka plenteksta serĉo, kun po-lingvaj indeksoj kaj View Transitions stato-persistado.
Aktivigo
Agordu per features.search:
tsfeatures: { search: "flexsearch", // "flexsearch" | false }
Kiam agordita al false, la serĉpaĝo faras Astro.rewrite al 404 kaj neniu serĉa UI estas generita.
Kiel ĝi funkcias
Generado de indekso
La tria konstrutpaŝo, node scripts/generateSearchIndex.mjs, skanas HTML-dosierojn en la dist/ dosierujo:
- Analizas paĝan enhavon kaj ĉerpas afiŝan tekston
- Indeksoj estas aŭtomate dividitaj per lingvo (
zh-cnkajenĉiu ricevas sian propran) - Indeksoj estas eligitaj al
dist/search/
Amplekso de indekso
La konstrua skripto analizas la <main> enhavon sur afiŝaj detalpaĝoj, do nur afiŝaj korpoj estas indeksitaj. Aliaj paĝoj (ĉefpaĝo, listoj, arkivoj, ktp.) ne eniras la serĉindekson.
Serĉa UI
src/components/pageViews/SearchView.astro implementas la serĉpaĝon:
- Uzas Flexsearch-klientflankan indekson por serĉa kongruo en la retumilo
- Lokas indeksajn aktivaĵojn per
getAssetPath("search/") - Uzas shadcn-temajn variablojn (
--background,--foreground,--primary, ktp.) por serĉokesto kaj rezultolista stilo transition:persistkonservas serĉostaton trans navigado
Serĉa fluo
- La uzanto tajpas en la serĉokesto
- Flexsearch kongruas kontraŭ la nuna lingva indekso
- La rezultolisto montras kongruajn afiŝojn (titolon, publikigajn/ĝisdatigajn datojn, kategorio-emblemon, etikedojn, kongruan teksteron)
processTermskribas la serĉpaĝan URL-on kun demando-parametroj al sessionStorage, por ke la reen-butono restarigu
Fonta reen-navigado
La reen-navigada mekanismo inter la serĉpaĝo kaj afiŝaj paĝoj:
- La
Main.astrokomponanto skribas la fontan paĝan URL-on albackUrlde sessionStorage - La
BackButton.astrode la afiŝa paĝo preferas salti reen albackUrlde sessionStorage, aŭ al la ĉefpaĝo se forestas - La
processTermde la serĉpaĝo skribas la URL-on kun demando-parametroj, restarigante la serĉostaton kiam revenante de afiŝo
Plurlingva serĉo
Flexsearch dividas indeksojn per paĝa lingvo:
zh-cnpaĝoj (radiko) → Ĉina indeksoenpaĝoj (/en/prefikso) → Angla indekso
Serĉo aŭtomate kongruas la indekson por la nuna paĝa lingvo: Ĉina sur ĉinaj paĝoj, Angla sur anglaj paĝoj.
Tema adaptiĝo
Flexsearch-serĉa UI uzas shadcn-temajn variablojn, difinitajn en SearchView.astro por serĉokesto kaj rezultolista stilo:
css:root { --search-primary: var(--primary); --search-text: var(--foreground); --search-background: var(--background); /* ... */ }
Malhela reĝimo ŝaltas aŭtomate per la selektilo .dark, konsista kun la reteja temo.
Rendimento
- Flexsearch-indeksoj estas statikaj dosieroj; serĉo okazas klientflanke sen servilaj petoj
- Indeksoj estas ŝarĝitaj laŭbezone (indeksaj fragmentoj elŝutiĝas nur dum serĉado)
transition:persistevitas re-inicializi la serĉan UI-on sur navigado
Rilataj artikoloj
Deplojo
2 min legadoGvidilo pri deplojo de Xingluo kovranta statikajn gastigajn platformojn (Netlify/Vercel/GitHub Pages), Nginx-memgastigadon, Docker kaj mediajn variablojn.
SEO
1 min legadoGvidilo pri SEO de Xingluo kovranta Open Graph, Twitter Card, canonical, JSON-LD strukturitajn datumojn, RSS kaj retejmapon.