feat(website): add type field to search index to sort by (#10212)

This commit is contained in:
Qjuh
2024-04-14 19:53:16 +02:00
committed by GitHub
parent afb97fbd00
commit 7baa9e4333
3 changed files with 31 additions and 1 deletions

View File

@@ -95,6 +95,7 @@ export function CmdK({ dependencies }: { readonly dependencies: string[] }) {
q: searchString,
limit: 25,
attributesToSearchOn: ['name'],
sort: ['type:asc'],
})),
});
setSearchResults(result.results.flatMap((res) => res.hits));

View File

@@ -66,7 +66,10 @@ try {
await client.waitForTask(task.taskUid);
}
await client.index(index.index).addDocuments(index.data);
const searchIndex = client.index(index.index);
await searchIndex.updateSettings({ sortableAttributes: ['type'] });
await searchIndex.addDocuments(index.data);
}),
);
} catch {}

View File

@@ -19,6 +19,7 @@ export interface MemberJSON {
name: string;
path: string;
summary: string | null;
type: number;
}
let idx = 0;
@@ -89,6 +90,30 @@ export function tryResolveSummaryText(item: ApiDeclaredItem): string | null {
return retVal;
}
export enum SearchOrderType {
Class,
Interface,
TypeAlias,
Function,
Enum,
Variable,
Event,
Method,
Property,
MethodSignature,
PropertySignature,
EnumMember,
Package,
Namespace,
IndexSignature,
CallSignature,
Constructor,
ConstructSignature,
EntryPoint,
Model,
None,
}
export function visitNodes(item: ApiItem, tag: string) {
const members: (MemberJSON & { id: number })[] = [];
@@ -111,6 +136,7 @@ export function visitNodes(item: ApiItem, tag: string) {
kind: member.kind,
summary: tryResolveSummaryText(member) ?? '',
path: generatePath(member.getHierarchy(), tag),
type: SearchOrderType[member.kind as keyof typeof SearchOrderType],
});
}