Skip to content

Content search service — multiSearch + highlighting facade#22

Merged
hendrikebbers merged 3 commits into
mainfrom
feat/011-content-search-service
Jul 13, 2026
Merged

Content search service — multiSearch + highlighting facade#22
hendrikebbers merged 3 commits into
mainfrom
feat/011-content-search-service

Conversation

@herbie-bot

Copy link
Copy Markdown
Collaborator

Summary

ContentSearchService is the read facade the MCP tools (spec 012) call. It builds Meilisearch multi-search bodies with AND-combined filters (source/locale/categories/since), a publishedDate:desc tie-breaker, and the library Highlighter boundary markers, returning SearchHits with HTML-safe snippets. Also exposes listPosts, getByUrlOrId, and categoryFacets. Read-only.

Spec

  • docs/specs/011-content-search-service/{design,behaviors,steps}.md

Changes

  • ContentFilters / SearchHit / SearchHits / CategoryCount records
  • ContentSearchService: search / listPosts / getByUrlOrId / categoryFacets — request building + Highlighter.safeHighlight parsing; resolves spec 003's tie-breaker at query time

Test coverage

  • 18 tests: pure buildFilter/parseHits/parseFacets + public methods via a capturing MeilisearchClient subclass (request bodies + parsing + get + empty). Live ranking/filtering is Meilisearch's job (request correctness verified). 121 tests total; spec-review and quality-review clean.

Closes #21

🤖 Generated with Claude Code

…cade)

- ContentFilters/SearchHit/SearchHits/CategoryCount result records.
- ContentSearchService (@component, gated on meilisearch.enabled) over
  MeilisearchClient: search/listPosts/getByUrlOrId/categoryFacets. Builds
  multi-search bodies with AND-combined quote-escaped filters, publishedDate:desc
  tie-breaker, Highlighter boundary markers + safeHighlight snippets, cropping,
  showRankingScore, and paging. Resolves spec 003's tie-breaker at query time.
- Tests: pure buildFilter/parseHits/parseFacets + public methods via a
  capturing MeilisearchClient subclass (request bodies + parsing + get + empty).
  121 tests green.
- steps.md; refresh CLAUDE.md.

Refs #21
@hendrikebbers hendrikebbers merged commit 4ec8664 into main Jul 13, 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.

Content search service — multiSearch + highlighting facade

2 participants