Filter exact music identities before lexical and semantic candidate limits
This commit is contained in:
1 parent
3ac1201909
commit
2eace15a33
7 files changed
+458
-19
No files matched your search
@@ -513,7 +513,7 @@ impl HybridSearch {
|
||||
.lexical
|
||||
.search_with_options_traced(query, candidates, options, trace, parent)?;
|
||||
if query.trim().is_empty() || limit == 0 {
|
||||
return Ok(Vec::new());
|
||||
return Ok(lexical.into_iter().take(limit.min(1000)).collect());
|
||||
}
|
||||
trace.timed("hybrid.identifier_priority", parent, |_, _| {
|
||||
promote_identifiers(query.trim(), &mut lexical)
|
||||
@@ -776,6 +776,24 @@ mod tests {
|
||||
let directory = tempfile::tempdir()?;
|
||||
let db = directory.path().join("index.db");
|
||||
let mut service = HybridSearch::with_provider(&db, Box::new(FailingProvider))?;
|
||||
// The failure-only provider proves metadata-only searches never require inference.
|
||||
let metadata = service.search_measured(
|
||||
"",
|
||||
5,
|
||||
&SearchOptions {
|
||||
media_artist: Some("Absent Artist".into()),
|
||||
..Default::default()
|
||||
},
|
||||
true,
|
||||
)?;
|
||||
assert!(metadata.results.is_empty());
|
||||
assert!(!metadata
|
||||
.metrics
|
||||
.trace
|
||||
.unwrap()
|
||||
.iter()
|
||||
.any(|span| span.name == "semantic.query_embedding"));
|
||||
|
||||
let mut trace = TraceCollector::new(MetricsMode::Debug);
|
||||
assert!(service
|
||||
.search_traced(
|
||||
|
||||
Reference in new issue
Block a user