This commit is contained in:
+31
-2
@@ -444,9 +444,25 @@ func (a *App) searchMedia(c *gin.Context) {
|
||||
if extraErr == nil && len(extraResults) > 0 {
|
||||
results = mergeSearchResults(results, extraResults)
|
||||
scored = services.RankSearchResults(strings.Join(explorationQueries[:min(len(explorationQueries), 3)], " "), results)
|
||||
recommended, geminiStats, geminiErr = services.EvaluateAllCandidatesWithGeminiWithDeadline(a.GeminiService, req.Query, scored, deadline.Add(-3*time.Second))
|
||||
a.debug("search supplemental query variants", gin.H{"variants": explorationQueries, "variantCount": len(explorationQueries)})
|
||||
a.debug("search gemini evaluation after supplemental search", geminiStats)
|
||||
reviewedLinks := services.ReviewedRecommendationLinks(recommended)
|
||||
supplementalCandidates := services.SelectUnevaluatedCandidates(scored, reviewedLinks, services.RemainingGeminiCapacity(recommended))
|
||||
if len(supplementalCandidates) > 0 {
|
||||
extraRecommended, extraStats, extraGeminiErr := services.EvaluateAllCandidatesWithGeminiWithDeadline(
|
||||
a.GeminiService,
|
||||
req.Query,
|
||||
supplementalCandidates,
|
||||
deadline.Add(-3*time.Second),
|
||||
)
|
||||
recommended = services.MergeUniqueRecommendations(recommended, extraRecommended)
|
||||
geminiStats = services.MergeGeminiBatchStats(geminiStats, extraStats)
|
||||
geminiStats.RecommendedCount = len(services.ReviewedRecommendationLinks(recommended))
|
||||
geminiErr = combineSearchWarnings(geminiErr, extraGeminiErr)
|
||||
a.debug("search gemini evaluation after supplemental search", gin.H{
|
||||
"stats": geminiStats,
|
||||
"supplementalCount": len(supplementalCandidates),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
if geminiErr != nil && len(recommended) == 0 {
|
||||
@@ -595,6 +611,19 @@ func mergeSearchResults(base, extra []services.SearchResult) []services.SearchRe
|
||||
return merged
|
||||
}
|
||||
|
||||
func combineSearchWarnings(base, extra error) error {
|
||||
switch {
|
||||
case base == nil:
|
||||
return extra
|
||||
case extra == nil:
|
||||
return base
|
||||
case base.Error() == extra.Error():
|
||||
return base
|
||||
default:
|
||||
return fmt.Errorf("%s; %s", base.Error(), extra.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func summarizeSearchResults(results []services.SearchResult, duration time.Duration, geminiCap int, warning string) searchDebugSummary {
|
||||
bySource := map[string]int{}
|
||||
withPreview := 0
|
||||
|
||||
Reference in New Issue
Block a user