diff --git a/crates/milli/src/search/facet/filter_vector.rs b/crates/milli/src/search/facet/filter_vector.rs index ee1c19923..9a0a50124 100644 --- a/crates/milli/src/search/facet/filter_vector.rs +++ b/crates/milli/src/search/facet/filter_vector.rs @@ -25,7 +25,6 @@ impl<'a> VectorFilter<'a> { /// - `_vectors.{embedder_name}` /// - `_vectors.{embedder_name}.userProvided` /// - `_vectors.{embedder_name}.fragments.{fragment_name}` - /// - `_vectors.{embedder_name}.fragments.{fragment_name}.userProvided` pub(super) fn parse(s: &'a str) -> Result { let mut split = s.split('.').peekable(); @@ -54,6 +53,12 @@ impl<'a> VectorFilter<'a> { user_provided = true; } + if fragment_name.is_some() && user_provided { + return Err(Error::UserError(UserError::InvalidFilter( + String::from("Vector filter cannot specify both a fragment name and userProvided"), + ))); + } + if let Some(next) = split.next() { return Err(Error::UserError(UserError::InvalidFilter(format!( "Unexpected part in vector filter: '{next}'"