TheR1sing3un opened a new pull request, #9797: URL: https://github.com/apache/paimon/pull/9797
### Purpose Hybrid search executes independent vector and full-text routes sequentially before ranking their results. Execute multiple routes concurrently with a bounded four-worker pool, then convert results in route order so RRF, weighted-score, and MRR ranking semantics remain unchanged. Empty and single-route searches keep the direct path. On failure, pending work is cancelled, started routes are allowed to clean up, and the original route exception is propagated. ### Tests - `python -m pytest -q pypaimon/tests/hybrid_search_execution_test.py pypaimon/tests/hybrid_search_ranker_test.py`: 10 passed. - Tests verify concurrent execution, stable route order, the single-route fast path, the worker cap, and cleanup before exception propagation. - Flake8 and `git diff --check` passed. ### Benchmark macOS arm64, Python 3.9.6. Each route uses a simulated I/O delay; values are medians of 12 runs. This isolates route scheduling from index implementation and ranking cost. | Routes | Serial | Concurrent | Speedup | |---|---:|---:|---:| | 2 x 20 ms | 47.238 ms | 24.278 ms | 1.95x | | 10 ms + 40 ms | 55.602 ms | 44.120 ms | 1.26x | | 4 x 20 ms | 93.787 ms | 24.859 ms | 3.77x | | 5/10/20/40 ms | 85.271 ms | 44.742 ms | 1.91x | Results remained in route order in every run. Real query gains depend on route latency distribution and nested native-index parallelism. The temporary benchmark driver is not included in the change. -- 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]
