Skip to content
Alexander Refsum Jensenius edited this page Jun 21, 2026 · 3 revisions

Full-text client-side search backed by a Jekyll-generated JSON index.

How it works

  1. Indexsite/search.json is a Liquid template rendered at build time into a JSON array of all indexable content.
  2. UIsite/search/index.html fetches the index and filters in JavaScript as the user types.

What is indexed

Content type value
Jekyll pages page
site/_events/ event
site/_news/ news
site/_directory/people/ person
site/_directory/institutions/ institution
site/_directory/projects/ project

Index fields (per item)

{
  "title": "...",
  "url": "/events/2026-03-12-meshup07/",
  "date": "2026-03-12",
  "categories": ["MeshUp", "WP7"],
  "tags": ["Sports Media", "AI Production"],
  "description": "...",
  "content": "first 100 words of body text",
  "type": "event"
}

Filtering

  • Full-text across title, description, content, tags, categories
  • Type filter chips: Event, News, Page, Person, Institution, Project
  • Category and tag filters

Badge colours

Type badges use classes in site/assets/css/custom.css:

Type Class Colour
Event .result-type-event teal
News .result-type-news blue-grey
Person .result-type-person terracotta
Institution .result-type-institution steel blue
Project .result-type-project amber

Tags and search

Person tags and search_keywords are indexed. Keep tags normalised with scripts/merge_tags.py so search and filters stay consistent — see Tags and Keywords.

Clone this wiki locally