on master help sign in
api: search checks headings
bef9aa2Matilde Park
pages/api/search.js+22−1
@@ -8,7 +8,28 @@ export default (req, res) => {
8 e?.slug.includes(req.query.q.toLowerCase()) ||
8 e?.slug.includes(req.query.q.toLowerCase()) ||
9 e?.parent.toLowerCase().includes(req.query.q.toLowerCase())
9 e?.parent.toLowerCase().includes(req.query.q.toLowerCase())
10 );
10 );
11+
12+ results.push(
13+ ...index
14+ .filter((e) => !results.includes(e))
15+ .filter((e) => {
16+ let found = false;
17+ e.headings.forEach((heading) => {
18+ if (heading.toLowerCase().includes(req.query.q.toLowerCase())) {
19+ found = true;
20+ }
21+ });
22+ return found;
23+ })
24+ .map((e) => ({ ...e, foundOnPage: true }))
25+ );
26+
11− const sorted = levenSort(results, req.q, ["title", "slug", "parent"]);
27+ const sorted = levenSort(results, req.q, [
28+ "title",
29+ "slug",
30+ "parent",
31+ "headings",
32+ ]);
12 res.statusCode = 200;
33 res.statusCode = 200;
13 res.setHeader("Content-Type", "application/json");
34 res.setHeader("Content-Type", "application/json");
14 res.end(JSON.stringify({ results: sorted }));
35 res.end(JSON.stringify({ results: sorted }));