Combiner.java
package redis.clients.jedis.search;
import redis.clients.jedis.CommandArguments;
import redis.clients.jedis.annots.Experimental;
import redis.clients.jedis.params.IParams;
import java.util.List;
import static redis.clients.jedis.search.SearchProtocol.SearchKeyword.YIELD_SCORE_AS;
/**
* Abstract combiner for combining multiple search scores. Instances are created via
* {@link Combiners}.
* @see Combiners
*/
@Experimental
public abstract class Combiner implements IParams {
private final String name;
private String scoreAlias;
protected Combiner(String name) {
this.name = name;
}
public final String getName() {
return name;
}
/**
* Set an alias for the combined score field using YIELD_SCORE_AS.
* @param alias the field name to use for the combined score
* @return this instance
*/
public final Combiner as(String alias) {
this.scoreAlias = alias;
return this;
}
protected abstract List<Object> getOwnArgs();
@Override
public final void addParams(CommandArguments args) {
args.add(name);
List<Object> ownArgs = getOwnArgs();
args.add(ownArgs.size());
ownArgs.forEach(args::add);
if (scoreAlias != null) {
args.add(YIELD_SCORE_AS);
args.add(scoreAlias);
}
}
}