Repository navigation
feat(fts): allow external indexed input for hybrid queries - #9847
Merged
Merged
Conversation
…9850) ## Summary #9822 bumped pylance's `lance-namespace` requirement to `>=0.13.0,<0.14`, first released in 14.0.0b10. The compat venv manager still installed `lance-namespace>=0.11.1,<0.12` alongside it, so pip failed with `ResolutionImpossible` and every `[14.0.0b10]` compat test failed ([run](https://github.com/lance-format/lance/actions/runs/37979490950/job/113988344868)). This maps pylance >=14.0.0b10 to the 0.13 range. ## Evidence `test_lance_namespace_dependency` now covers 14.0.0b9 (0.11 range) and 14.0.0b10 (0.13 range). ## Merge Risk **Door:** two-way. Only test harness code changes. **Blast Radius:** none. Only the compat tests are affected. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit e85fab2)
BubbleCal
marked this pull request as ready for review
October 11, 2026 07:03
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
Contributor
There was a problem hiding this comment.
✅ Gate recommendation: approve.
The external-input boundary supports distributed indexed search while preserving hybrid scoring and top-k semantics. Local parity, child-replacement, invalid-input, and compound-query checks found no merge-blocking issue.
Xuanwo
approved these changes
Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Distributed planners cannot replace the indexed work inside
HybridCompoundQueryExec, so an appended unindexed tail keeps the entire indexed search on the query node.Add
with_indexed_inputto accept a bounded, single-partition result stream and its committed-corpus BM25 scorer. The hybrid node continues to tokenize and score residual rows, then merges both arms with the existing score/row-ID ordering and limit. With an external input, it opens only the representative segment needed for the residual tokenizer. Physical child replacement preserves the input and scorer; schema, partition count, result cardinality and null checks enforce the input contract.The compatibility-test harness also includes the merged fix from #9850, selecting
lance-namespace>=0.13.0,<0.14for publishedpylance>=14.0.0b10wheels.Validation on AWS with the repository's Rust 1.98.1 toolchain:
cargo fmt --all -- --checkpasses.lance-ioon both this change and its pinned baseline0fd26effc79c62c244a5baf92cdda06e301baf21. The same full-workspace check passes with command-line allowances for those two existing lints:-A clippy::single_range_in_vec_init -A clippy::implicit_clone. No source or repository lint settings were suppressed.CI on
df070dd26a1079426fdfecabf5b4a28b99dd2393: compatibility tests pass (421 passed, 10 skipped), as do Python lint and Rust Clippy/format checks. The compatibility fix changes only two Python test-harness files; Rust source and Cargo files are unchanged from the validated API commit.The API change is based on Sophon's existing Lance pin and adds no storage or wire-format changes.