Skip to content

feat: Add support for FT.HYBRID command (#4342)#4405

Merged
ggivo merged 33 commits intomasterfrom
add-hybrid-search
Feb 12, 2026
Merged

feat: Add support for FT.HYBRID command (#4342)#4405
ggivo merged 33 commits intomasterfrom
add-hybrid-search

Conversation

@a-TODO-rov
Copy link
Copy Markdown
Contributor

@a-TODO-rov a-TODO-rov commented Jan 14, 2026

Resolves: #4405

@a-TODO-rov a-TODO-rov linked an issue Jan 14, 2026 that may be closed by this pull request
@a-TODO-rov a-TODO-rov requested review from ggivo and uglide January 14, 2026 13:20
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 14, 2026

Test Results

   295 files  + 3     295 suites  +3   12m 42s ⏱️ +56s
10 803 tests +96  10 586 ✅ +1 301  217 💤  - 1 205  0 ❌ ±0 
 2 817 runs  ± 0   2 808 ✅ ±    0    9 💤 ±    0  0 ❌ ±0 

Results for commit 379622b. ± Comparison against base commit 3582046.

♻️ This comment has been updated with latest results.

Copy link
Copy Markdown
Collaborator

@ggivo ggivo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still need to go over the Response object, but here my comments up to now

My major concern is that with this approach, the builder does not guide adding a clause once (e.g., users can add multiple GROUP BY, SortBy, LIMIT )

@uglide uglide added this to the 8.0.0 milestone Jan 23, 2026
* time, warnings, and a list of per-document results with document key and field values.
*/
@Experimental
public class HybridReply {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My bad, actually it should be HybridSearchResult

@uglide
Copy link
Copy Markdown
Contributor

uglide commented Jan 27, 2026

auggie review

@augmentcode
Copy link
Copy Markdown

augmentcode bot commented Jan 27, 2026

🤖 Augment PR Summary

Summary: Adds client support for the RediSearch FT.HYBRID command to Jedis, enabling combined text + vector similarity queries.

Changes:

  • Introduced new builder/params types: HybridParams, HybridSearchParams, HybridVectorParams, CombineParams, and PostProcessingParams
  • Added HybridReply response model and RESP2/RESP3 builders
  • Extended SearchProtocol with the HYBRID command and related keywords
  • Wired ftHybrid into CommandObjects, UnifiedJedis, and PipeliningBase
  • Added unit and integration tests for standalone + cluster execution paths
  • Updated test helpers/endpoints (incl. a new cluster-stack docker endpoint) to support running hybrid tests

Technical Notes: The new API is marked @Experimental; supports VSIM KNN/RANGE, optional COMBINE strategies, and post-processing (LOAD/GROUPBY/REDUCE/SORTBY/APPLY/FILTER/LIMIT).

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 5 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.HYBRID command wiring (protocol enum, CommandObjects, UnifiedJedis, pipelining interfaces) plus a HybridResult reply 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.

@ggivo ggivo modified the milestones: 8.0.0, 7.3.0 Feb 12, 2026
@ggivo ggivo merged commit 0af1fb8 into master Feb 12, 2026
13 checks passed
@ggivo ggivo deleted the add-hybrid-search branch February 12, 2026 13:41
@ggivo ggivo changed the title Add hybrid search feat: Add support for FT.HYBRID command (#4342) Feb 17, 2026
@ggivo ggivo added the feature label Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for FT.HYBRID command

4 participants