FTHybridSearchParams.java
package redis.clients.jedis.search.hybrid;
import redis.clients.jedis.CommandArguments;
import redis.clients.jedis.annots.Experimental;
import redis.clients.jedis.params.IParams;
import redis.clients.jedis.search.Scorer;
import redis.clients.jedis.util.JedisAsserts;
import static redis.clients.jedis.search.SearchProtocol.SearchKeyword.*;
/**
* Arguments for the SEARCH clause in FT.HYBRID command. Configures text search with optional scorer
* and score aliasing.
*/
@Experimental
public class FTHybridSearchParams implements IParams {
private String query;
private Scorer scorer;
private String scoreAlias;
private FTHybridSearchParams() {
}
/**
* @return a new {@link Builder} for {@link FTHybridSearchParams}.
*/
public static Builder builder() {
return new Builder();
}
/**
* Builder for {@link FTHybridSearchParams}.
*/
public static class Builder {
private final FTHybridSearchParams instance = new FTHybridSearchParams();
/**
* Build the {@link FTHybridSearchParams} instance.
* @return the configured arguments
*/
public FTHybridSearchParams build() {
JedisAsserts.notNull(instance.query, "Query must not be null");
return instance;
}
/**
* Set the search query string.
* @param query the query string
* @return this builder
*/
public Builder query(String query) {
instance.query = query;
return this;
}
/**
* Set the scorer for text search.
* @param scorer the scorer configuration
* @return this builder
*/
public Builder scorer(Scorer scorer) {
instance.scorer = scorer;
return this;
}
/**
* Set an alias for the text search score in the results.
* @param scoreAlias the score alias name
* @return this builder
*/
public Builder scoreAlias(String scoreAlias) {
instance.scoreAlias = scoreAlias;
return this;
}
}
@Override
public void addParams(CommandArguments args) {
args.add(SEARCH);
args.add(query);
if (scorer != null) {
args.add(SCORER);
scorer.addParams(args);
}
if (scoreAlias != null) {
args.add(YIELD_SCORE_AS);
args.add(scoreAlias);
}
}
}