Skip to content

Search enhancements — synonyms/stop-words + facet surfacing#34

Merged
hendrikebbers merged 3 commits into
mainfrom
feat/017-search-enhancements
Jul 14, 2026
Merged

Search enhancements — synonyms/stop-words + facet surfacing#34
hendrikebbers merged 3 commits into
mainfrom
feat/017-search-enhancements

Conversation

@herbie-bot

Copy link
Copy Markdown
Collaborator

Summary

Two opt-in Phase 4 search enhancements from the design's menu. Semantic/embeddings search is deferred to a future spec (heavy: embedder provider + indexing cost), per the design's open question and your scope choice.

Spec

  • docs/specs/017-search-enhancements/{design,behaviors,steps}.md

Changes

  • Synonyms & stop words: ContentSearchProperties (open-elements.content.search.synonyms/stop-words) + SearchSettingsInitializer (startup runner) pushing them via MeilisearchClient.updateSettings — no data reindex, no-op when unset, failure-tolerant
  • Facet surfacing: SearchHits.facets; search_content returns category facet counts alongside hits
  • Deferred: semantic/hybrid search — with it off, keyword search is unchanged (non-regression)

Test coverage

  • SearchSettingsInitializerTest (settings pushed via updateSettings; no-op when empty; buildSettings) + ContentSearchServiceTest.searchSurfacesFacets. Live synonym/stop-word effects are Meilisearch's (verified against a live instance). Full suite 159 green (non-regression). Both reviews clean.

Closes #33
🤖 Generated with Claude Code

…facing

Scope (from the design's optional menu): synonyms/stop-words and facet
surfacing. Semantic/embeddings search deferred to a future spec.

- ContentSearchProperties (open-elements.content.search.synonyms/stop-words)
  + SearchSettingsInitializer (ApplicationRunner @order 40, gated on
  meilisearch.enabled): pushes them via MeilisearchClient.updateSettings
  (no reindex); no-op when unset; failure logged, not fatal.
- Facet surfacing: SearchHits gains a facets field; ContentSearchService.search
  requests facets:[categories] and returns their counts.
- Semantic search off by default -> keyword search unchanged (non-regression).
- Tests: SearchSettingsInitializerTest + ContentSearchServiceTest.searchSurfacesFacets.
  159 tests green. steps.md; CLAUDE.md (roadmap 001-017 complete).

Refs #33
@hendrikebbers hendrikebbers merged commit 26b9e0b into main Jul 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Search enhancements — synonyms/stop-words + facet surfacing

2 participants