Expand Artgrid query coverage to artlist canonical URLs
build-push / docker (push) Successful in 4m23s
build-push / docker (push) Successful in 4m23s
This commit is contained in:
@@ -128,6 +128,19 @@
|
|||||||
- Effect:
|
- Effect:
|
||||||
- avoids backend 500 during the Gemini Vision evaluation stage for mid-sized result sets
|
- avoids backend 500 during the Gemini Vision evaluation stage for mid-sized result sets
|
||||||
|
|
||||||
|
## Current Session Update (2026-03-13, Artgrid Query Coverage Fix)
|
||||||
|
- Another Artgrid no-results regression was found even after the collector URL matcher was widened.
|
||||||
|
- Root cause:
|
||||||
|
- Artgrid collector query generation still leaned on `site:artgrid.io/clip/`
|
||||||
|
- in practice, canonical clip pages can surface under `artlist.io/stock-footage/clip/...`
|
||||||
|
- so some Artgrid-only searches still returned zero renderable results even though the accept filter had been fixed
|
||||||
|
- Fix applied:
|
||||||
|
- Artgrid query generation now searches both:
|
||||||
|
- `site:artgrid.io/clip/`
|
||||||
|
- `site:artlist.io/stock-footage/clip/`
|
||||||
|
- Effect:
|
||||||
|
- improves Artgrid recall in SearXNG result sets that favor canonical Artlist URLs over Artgrid URLs
|
||||||
|
|
||||||
## Local Self-Test Workflow
|
## Local Self-Test Workflow
|
||||||
- Primary command:
|
- Primary command:
|
||||||
- `bash scripts/selftest.sh`
|
- `bash scripts/selftest.sh`
|
||||||
|
|||||||
@@ -336,6 +336,8 @@ func buildArtgridQueries(base string) []string {
|
|||||||
return []string{
|
return []string{
|
||||||
fmt.Sprintf(`"%s" ("stock footage" OR "b-roll" OR cinematic OR editorial) site:artgrid.io/clip/`, base),
|
fmt.Sprintf(`"%s" ("stock footage" OR "b-roll" OR cinematic OR editorial) site:artgrid.io/clip/`, base),
|
||||||
fmt.Sprintf(`"%s" ("footage" OR "cinematic" OR "establishing shot") site:artgrid.io/clip/`, base),
|
fmt.Sprintf(`"%s" ("footage" OR "cinematic" OR "establishing shot") site:artgrid.io/clip/`, base),
|
||||||
|
fmt.Sprintf(`"%s" ("stock footage" OR "b-roll" OR cinematic OR editorial) site:artlist.io/stock-footage/clip/`, base),
|
||||||
|
fmt.Sprintf(`"%s" ("footage" OR "cinematic" OR "establishing shot") site:artlist.io/stock-footage/clip/`, base),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package services
|
package services
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestExtractVideoPreviewURLFindsEnvatoPreview(t *testing.T) {
|
func TestExtractVideoPreviewURLFindsEnvatoPreview(t *testing.T) {
|
||||||
html := `<script type="application/ld+json">{"contentUrl":"https://video-previews.elements.envatousercontent.com/ad0a3abc-7eb0-4075-8f68-8198f9a08777/watermarked_preview/watermarked_preview.mp4"}</script>`
|
html := `<script type="application/ld+json">{"contentUrl":"https://video-previews.elements.envatousercontent.com/ad0a3abc-7eb0-4075-8f68-8198f9a08777/watermarked_preview/watermarked_preview.mp4"}</script>`
|
||||||
@@ -64,6 +67,20 @@ func TestIsRenderableArtgridResultAcceptsArtlistCanonical(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildArtgridQueriesIncludesArtlistCanonicalDomain(t *testing.T) {
|
||||||
|
queries := buildArtgridQueries("friendly couple")
|
||||||
|
found := false
|
||||||
|
for _, query := range queries {
|
||||||
|
if strings.Contains(query, "site:artlist.io/stock-footage/clip/") {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
t.Fatal("expected Artgrid queries to include artlist canonical domain")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGeminiCandidateLimitNeverExceedsCandidates(t *testing.T) {
|
func TestGeminiCandidateLimitNeverExceedsCandidates(t *testing.T) {
|
||||||
if got := GeminiCandidateLimit(9); got != 9 {
|
if got := GeminiCandidateLimit(9); got != 9 {
|
||||||
t.Fatalf("expected Gemini limit to stay within candidate count, got %d", got)
|
t.Fatalf("expected Gemini limit to stay within candidate count, got %d", got)
|
||||||
|
|||||||
Reference in New Issue
Block a user