dsmiley opened a new pull request, #4191: URL: https://github.com/apache/solr/pull/4191
https://issues.apache.org/jira/browse/SOLR-18074 back-port to branch_9x Implemented by GitHub Copilot. It did absolutely everything, including some tricky parts... amazing! What follows are Copilot's summary: ---- Cherry-picks commit 949b28e for SOLR-18074 onto branch_9x, enabling multi-valued `DenseVectorField` support by transparently converting multi-valued vector fields into Lucene block-join child documents at index time. ## Changes ### Cherry-pick (949b28e) — resolved conflicts - **`NestedUpdateProcessorFactory`**: Detects multi-valued vector fields at root level and converts each value into a child nested doc under a pseudo-field (`NESTED_VECTORS_PSEUDO_FIELD_NAME`), removing the original field - **`ChildDocTransformer`**: Reconstructs multi-valued vectors from nested children back onto the parent doc in search results - **`DenseVectorField` / `IndexSchema`**: Minor supporting changes for multi-valued awareness - **`schema-densevector.xml`**: Added nested doc fields (`_root_`, `_nest_path_`), multi-valued vector fields, and dynamic fields for new tests - **Ref guide**: Documents multi-valued dense vector indexing syntax and behavior ### branch_9x compatibility fixes - **Java 11**: Replaced `instanceof` pattern matching (Java 16+) with explicit cast in `NestedUpdateProcessorFactory` - **`KnnQParser`**: Ported `childrenOf` and `parents.preFilter` parameters from main — required by the new tests but absent on this branch. Uses `DiversifyingChildrenFloatKnnVectorQuery` / `DiversifyingChildrenByteKnnVectorQuery` from Lucene (already present in Lucene 9.12.3): ``` {!knn f=vector_multivalued topK=3 childrenOf=$allParents parents.preFilter=$someParents}[1,1,1,1] ``` - **`ChildDocTransformer`**: Fixed byte vector extraction to respect `BytesRef.offset` and `BytesRef.length` (the original iterated the entire backing array) <!-- START COPILOT CODING AGENT TIPS --> --- 🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. [Learn more about Advanced Security.](https://gh.io/cca-advanced-security) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
