feat: Add support for FT.HYBRID command (#4342)#4405
Conversation
src/main/java/redis/clients/jedis/search/HybridSearchParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/HybridSearchParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/hybrid/FTHybridSearchParams.java
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/HybridVectorParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/hybrid/FTHybridPostProcessingParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/PostProcessingParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/PostProcessingParams.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/hybrid/FTHybridPostProcessingParams.java
Show resolved
Hide resolved
| * time, warnings, and a list of per-document results with document key and field values. | ||
| */ | ||
| @Experimental | ||
| public class HybridReply { |
There was a problem hiding this comment.
My bad, actually it should be HybridSearchResult
|
auggie review |
🤖 Augment PR SummarySummary: Adds client support for the RediSearch Changes:
Technical Notes: The new API is marked 🤖 Was this summary useful? React with 👍 or 👎 |
src/main/java/redis/clients/jedis/search/HybridSearchParams.java
Outdated
Show resolved
Hide resolved
src/test/java/redis/clients/jedis/commands/unified/search/FTHybridCommandsTestBase.java
Outdated
Show resolved
Hide resolved
...st/java/redis/clients/jedis/commands/unified/cluster/search/FTHybridCommandsClusterTest.java
Outdated
Show resolved
Hide resolved
e446528 to
21e898b
Compare
1ea13f5 to
63c7cdb
Compare
There was a problem hiding this comment.
Pull request overview
Adds client-side support in Jedis for RediSearch’s FT.HYBRID command (hybrid text + vector search), including argument builders, response parsing, and integration tests for both standalone and cluster environments.
Changes:
- Introduce
FT.HYBRIDcommand wiring (protocol enum,CommandObjects,UnifiedJedis, pipelining interfaces) plus aHybridResultreply parser. - Add new parameter/DSL types for hybrid search clauses and post-processing (
FTHybrid*Params,Combiners,Scorers,Apply/Filter/Limit). - Add integration test coverage for hybrid search on standalone and cluster, plus test env additions for a Redis Stack cluster endpoint.
Reviewed changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/resources/env/docker-compose.yml | Adds a Redis Stack cluster service used by integration tests. |
| src/test/resources/endpoints.json | Registers the new cluster-stack endpoint configuration. |
| src/test/java/redis/clients/jedis/commands/unified/search/FTHybridCommandsTestBase.java | New shared integration test suite for FT.HYBRID behavior. |
| src/test/java/redis/clients/jedis/commands/unified/cluster/search/FTHybridCommandsClusterTest.java | Runs the hybrid test suite against cluster mode. |
| src/test/java/redis/clients/jedis/commands/unified/cluster/ClusterCommandsTestHelper.java | Exposes cluster helper methods + adds overload accepting an endpoint. |
| src/test/java/redis/clients/jedis/commands/unified/client/search/FTHybridRedisClientCommandsTest.java | Runs the hybrid test suite against standalone client mode. |
| src/test/java/redis/clients/jedis/commands/unified/client/RedisClientCommandsTestHelper.java | Adds overload to create a client from an explicit endpoint. |
| src/test/java/redis/clients/jedis/commands/unified/UnifiedJedisCommandsTestBase.java | Makes test conditions use the selected endpoint instead of hardcoding standalone0. |
| src/main/java/redis/clients/jedis/search/hybrid/HybridResult.java | New result model + RESP2/RESP3 builders for parsing FT.HYBRID replies. |
| src/main/java/redis/clients/jedis/search/hybrid/FTHybridVectorParams.java | Builder for VSIM clause arguments (KNN/RANGE, filters, score alias). |
| src/main/java/redis/clients/jedis/search/hybrid/FTHybridSearchParams.java | Builder for SEARCH clause arguments (query, scorer, score alias). |
| src/main/java/redis/clients/jedis/search/hybrid/FTHybridPostProcessingParams.java | Builder for post-processing ops (LOAD/GROUPBY/APPLY/SORTBY/FILTER/LIMIT/NOSORT). |
| src/main/java/redis/clients/jedis/search/hybrid/FTHybridParams.java | Top-level builder composing SEARCH/VSIM/COMBINE/PARAMS/TIMEOUT. |
| src/main/java/redis/clients/jedis/search/SearchProtocol.java | Adds FT.HYBRID command + keywords needed by the new builders. |
| src/main/java/redis/clients/jedis/search/Scorers.java | Convenience factory for text scorers used by hybrid SEARCH clause. |
| src/main/java/redis/clients/jedis/search/Scorer.java | Scorer abstraction used by FTHybridSearchParams. |
| src/main/java/redis/clients/jedis/search/RediSearchPipelineCommands.java | Adds pipelined ftHybrid API. |
| src/main/java/redis/clients/jedis/search/RediSearchCommands.java | Adds synchronous ftHybrid API. |
| src/main/java/redis/clients/jedis/search/Limit.java | Adds LIMIT post-processing parameter type. |
| src/main/java/redis/clients/jedis/search/Filter.java | Adds FILTER post-processing parameter type. |
| src/main/java/redis/clients/jedis/search/Combiners.java | Adds COMBINE clause factory (RRF, LINEAR). |
| src/main/java/redis/clients/jedis/search/Combiner.java | Combiner abstraction used by FTHybridParams. |
| src/main/java/redis/clients/jedis/search/Apply.java | Adds APPLY post-processing parameter type. |
| src/main/java/redis/clients/jedis/UnifiedJedis.java | Wires ftHybrid through UnifiedJedis. |
| src/main/java/redis/clients/jedis/PipeliningBase.java | Wires pipelined ftHybrid. |
| src/main/java/redis/clients/jedis/CommandObjects.java | Adds ftHybrid command object using SearchCommand.HYBRID. |
| pom.xml | Adds formatter plugin include patterns for newly added classes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/test/java/redis/clients/jedis/commands/unified/search/FTHybridCommandsTestBase.java
Show resolved
Hide resolved
src/test/java/redis/clients/jedis/commands/unified/search/FTHybridCommandsTestBase.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/hybrid/HybridResult.java
Outdated
Show resolved
Hide resolved
src/main/java/redis/clients/jedis/search/hybrid/FTHybridPostProcessingParams.java
Show resolved
Hide resolved
src/test/java/redis/clients/jedis/commands/unified/cluster/ClusterCommandsTestHelper.java
Show resolved
Hide resolved
src/test/java/redis/clients/jedis/commands/unified/search/FTHybridCommandsTestBase.java
Show resolved
Hide resolved
add testBM25STD scorer test
- add equals/hashcode for FTHybridPostProcessingParams - add unit tests for FTHybridPostProcessingParams.load
Resolves: #4405