Skip to content

Search

Shoehorn provides full-text search across your entire platform, powered by Meilisearch. Results appear instantly as you type with typo tolerance, synonym expansion, and relevance ranking.

Click the search bar or press / from any page. Results stream in as you type.

Search covers 9 content types:

TypeSearchable fields (priority order)
Entitiesname, description, tags, metadata
Documentationtitle, search terms, description, content, tags
Usersname, username, email, department
Teamsname, description, type
Repositoriesname, full name, description, language, topics
Workflowsname, slug, description, tags
Moldsname, slug, description, language, tags
Pipelinesname, description, provider
Doc Sitestitle, description, URL

Fields listed first have higher relevance weight. A match on an entity name ranks higher than a match in its metadata.

Search finds results even with misspellings. Words with 4+ characters tolerate 1 typo, words with 8+ characters tolerate 2 typos.

Examples:

  • paymnt finds payment
  • kuberntes finds kubernetes
  • deploymnt finds deployment

Built-in synonyms expand your queries automatically:

You typeAlso matches
k8skubernetes, kube
svcservice
deploydeployment
reporepository
dbdatabase
appapplication
configconfiguration
dockerdockerhub
gitgithub, gitlab

Additional synonyms are registered per content type. For example, in repositories: gh matches github, gl matches gitlab, bb matches bitbucket.

Results are ranked by:

  1. Word match, more matched query terms rank higher
  2. Typo count, fewer typos rank higher
  3. Proximity, matched terms closer together rank higher
  4. Field priority, match in name ranks above match in description
  5. Sort, user-specified sort order (if any)
  6. Exactness, exact matches rank above prefix matches
  7. Recency, newer items get a boost

Narrow results by type, lifecycle, owner, or tags using the filter panel or query parameters.

Documentation search supports hybrid keyword + semantic matching. When you ask a question-like query (starting with “how”, “what”, “why”, etc.) or use 5+ words, the search engine combines keyword relevance with meaning-based vector similarity for better results.

Terminal window
curl "https://shoehorn.example.com/api/v1/search?q=payment&type=service" \
-H "Authorization: Bearer <token>"
ParameterDescriptionExample
qSearch querypayment
typeFilter by content typeentity, doc, user, team, repository, workflow, mold, pipeline
ownerFilter by teampayments-team
lifecycleFilter by lifecycleproduction
tagsFilter by tagscritical
limitResults per page (default 20)20
offsetPagination offset0
sort_bySort fieldrelevance, date, title, type
Terminal window
curl "https://shoehorn.example.com/api/v1/search/autocomplete?q=pay&limit=5" \
-H "Authorization: Bearer <token>"

Autocomplete combines:

  • Query completions
  • Content-based suggestions
  • Your recent search history
  • Trending searches across the platform

Results are cached per user for 5 minutes.

Entities are indexed automatically when:

  • Created via API, manifest, K8s agent, or Terraform
  • Updated (metadata, annotations, or enrichment changes)
  • Enriched (README fetched, scorecard evaluated, entityFile applied)

The search index rebuilds automatically if it becomes stale. You can check indexing status at:

GET /api/v1/indexing/status

Search results are filtered by your tenant and permissions. You only see items you have access to. The search engine enforces:

  • Tenant isolation (you only see your tenant’s data)
  • Public/private visibility
  • Team-based access controls
  • Soft-delete exclusion (deleted items are hidden)