Website: improve search ranking parameters

This commit is contained in:
Johannes Kirschbauer 2024-06-09 21:10:10 +02:00 committed by mergify[bot]
parent 0532cdd73f
commit c71805f626
3 changed files with 25 additions and 3 deletions

View File

@ -108,8 +108,6 @@ async function getManualSrc(item: Doc): Promise<string | null> {
}
const manPath = path.join(process.cwd(), "src/models/data", extern.file);
const source = fs.readFileSync(manPath, { encoding: "utf-8" });
// const src = extern.file;
// console.log({ source, manPath });
return source;
}
@ -208,6 +206,10 @@ export default async function Page(props: { params: { path: string[] } }) {
<meta key={idx} data-pagefind-meta={`category:${attr}`} />
)
)}
<meta
data-pagefind-sort="weight[data-weight]"
data-weight={meta?.path?.at(0) === "builtins" ? "10" : "1"}
/>
<Box>
<Box
sx={{
@ -226,6 +228,7 @@ export default async function Page(props: { params: { path: string[] } }) {
id={item?.meta.title}
variant="h2"
component={"h1"}
data-pagefind-weight="15"
sx={{
marginRight: "auto",
}}

View File

@ -31,6 +31,9 @@ type PagefindHooks = {
term: string | null,
options?: {
filters?: Filters;
sort?: {
[name: string]: "asc" | "desc";
};
}
) =>
| Promise<{
@ -56,6 +59,19 @@ export const usePagefindSearch = (): PagefindHooks => {
// @ts-ignore
/* webpackIgnore: true */ "/pagefind/pagefind.js"
);
await pagefind.options({
ranking: {
// controls how quickly a term “saturates” on a page.
// Once a term has appeared on a page many times,
// further appearances have a reduced impact on the page rank.
// We choose to reduce this to suppress pages that are ranking well due to a high number of search terms existing in their content.
termSaturation: 0.5, // default value 1.4
// Changes the way ranking compares page lengths with the average page lengths on your site.
pageLength: 0.6, // default value 0.75
// Increasing the termSimilarity parameter is a good way to suppress pages that are ranking well for long extensions of search terms.
termSimilarity: 1.5, // default value 1.0
},
});
// @ts-ignore
window.pagefind = pagefind;

View File

@ -66,7 +66,10 @@ export function PagefindResults() {
const init = async () => {
console.log({ search, term, filters: { from, to } });
if (search) {
let raw = await search(term, { filters: { from, to } });
let raw = await search(term, {
filters: { from, to },
sort: { weight: "desc" },
});
setSearchResults(raw?.results || []);
}
};