Parent: #3401
Related: #929
Summary
Native LanceDB index creation should accept Lance nested field paths and pass the canonical full path to Lance, instead of resolving columns with a top-level Arrow lookup or falling back to a leaf field name.
Scope
- Update the native Rust create-index path so
metadata.user_id, payload.text, and image.embedding resolve through Lance field path semantics.
- Preserve escaped paths such as
`a.b` and `meta-data`.`user-id`.
- Ensure scalar, vector, and FTS index creation share the same field-path contract.
- Keep validation errors explicit when the field path is invalid or ambiguous.
Acceptance criteria
create_scalar_index("metadata.user_id") creates an index on the nested leaf.
create_index(... vector_column_name="image.embedding" ...) creates a vector index on the nested leaf.
- FTS index creation can target
payload.text once the Python wrapper guard is removed.
- Top-level literal-dot fields and nested paths are distinguishable.
Parent: #3401
Related: #929
Summary
Native LanceDB index creation should accept Lance nested field paths and pass the canonical full path to Lance, instead of resolving columns with a top-level Arrow lookup or falling back to a leaf field name.
Scope
metadata.user_id,payload.text, andimage.embeddingresolve through Lance field path semantics.`a.b`and`meta-data`.`user-id`.Acceptance criteria
create_scalar_index("metadata.user_id")creates an index on the nested leaf.create_index(... vector_column_name="image.embedding" ...)creates a vector index on the nested leaf.payload.textonce the Python wrapper guard is removed.