diff --git a/internal/database/queries.sql.go b/internal/database/queries.sql.go index 47ac5fc..cb598fa 100644 --- a/internal/database/queries.sql.go +++ b/internal/database/queries.sql.go @@ -7561,18 +7561,19 @@ func (q *Queries) SearchSeriesValues(ctx context.Context, arg SearchSeriesValues const SearchTagsValues = `-- name: SearchTagsValues :many SELECT - unnest(mi.tags_search)::TEXT as value, + tag.value::TEXT as value, COUNT(*) as count, - word_similarity($1, unnest(mi.tags_search))::float8 as score + word_similarity($1, tag.value)::float8 as score FROM media_items mi JOIN libraries l ON mi.library_id = l.id LEFT JOIN library_visibility lv ON l.id = lv.library_id AND lv.user_id = $2 +CROSS JOIN LATERAL unnest(mi.tags_search) AS tag WHERE COALESCE(lv.is_visible, true) = true AND ($3::uuid IS NULL OR mi.library_id = $3::uuid) - AND unnest(mi.tags_search) IS NOT NULL - AND word_similarity($1, unnest(mi.tags_search)) > 0.3 -GROUP BY unnest(mi.tags_search), word_similarity($1, unnest(mi.tags_search))::float8 -ORDER BY word_similarity($1, unnest(mi.tags_search))::float8 DESC, COUNT DESC + AND tag.value IS NOT NULL + AND word_similarity($1, tag.value) > 0.3 +GROUP BY tag.value, word_similarity($1, tag.value)::float8 +ORDER BY word_similarity($1, tag.value)::float8 DESC, COUNT DESC LIMIT $5 OFFSET $4 ` diff --git a/internal/database/queries/queries.sql b/internal/database/queries/queries.sql index 4761cf9..9614f4b 100644 --- a/internal/database/queries/queries.sql +++ b/internal/database/queries/queries.sql @@ -565,18 +565,19 @@ LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset'); -- name: SearchTagsValues :many SELECT - unnest(mi.tags_search)::TEXT as value, + tag.value::TEXT as value, COUNT(*) as count, - word_similarity(sqlc.narg('search_query'), unnest(mi.tags_search))::float8 as score + word_similarity(sqlc.narg('search_query'), tag.value)::float8 as score FROM media_items mi JOIN libraries l ON mi.library_id = l.id LEFT JOIN library_visibility lv ON l.id = lv.library_id AND lv.user_id = sqlc.narg('user_id') +CROSS JOIN LATERAL unnest(mi.tags_search) AS tag WHERE COALESCE(lv.is_visible, true) = true AND (sqlc.narg('library_id')::uuid IS NULL OR mi.library_id = sqlc.narg('library_id')::uuid) - AND unnest(mi.tags_search) IS NOT NULL - AND word_similarity(sqlc.narg('search_query'), unnest(mi.tags_search)) > 0.3 -GROUP BY unnest(mi.tags_search), word_similarity(sqlc.narg('search_query'), unnest(mi.tags_search))::float8 -ORDER BY word_similarity(sqlc.narg('search_query'), unnest(mi.tags_search))::float8 DESC, COUNT DESC + AND tag.value IS NOT NULL + AND word_similarity(sqlc.narg('search_query'), tag.value) > 0.3 +GROUP BY tag.value, word_similarity(sqlc.narg('search_query'), tag.value)::float8 +ORDER BY word_similarity(sqlc.narg('search_query'), tag.value)::float8 DESC, COUNT DESC LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset'); -- name: SearchSeriesValues :many