Skip to content

Support nested field paths in native index creation #3402

Description

@Xuanwo

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.

Metadata

Metadata

Assignees

Labels

RustRust related issuesenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions