feat(search): page content-search endpoint (multi-tag AND + text + warnings)
New GET /v1/me/page-search surfacing the analysis worker's output: - repo::page_analysis::page_search + PageSearchQuery: multi-tag AND across (user page_tags ∪ global page_auto_tags) via the unnest double-negative idiom, weighted OCR/scene text ranking (ts_rank over search_doc), and content-warning include/exclude. One row per page with is_nsfw + deduped content_warnings + rank. - domain::PageSearchItem. - api::page_tags: /me/page-search handler with CSV tag/warning parsing (parse_tags_csv reuses normalize_tag; parse_warnings_csv validates the closed vocabulary), requiring at least one positive filter (422 else). This is where the reserved OCR text search lands for pages. Tests: multi-tag AND user∪auto, speech>sfx ranking, cw include/exclude (+ row flags), text-only (no tags), missing-filter 422, unknown-warning 422, auth required. Note: the /me/page-tags/chapters|mangas aggregations keep single-tag behavior + the reserved text=501 for now; page-level search is the primary text surface. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2
backend/Cargo.lock
generated
2
backend/Cargo.lock
generated
@@ -1517,7 +1517,7 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
||||
|
||||
[[package]]
|
||||
name = "mangalord"
|
||||
version = "0.68.0"
|
||||
version = "0.69.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
|
||||
Reference in New Issue
Block a user