All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.redisearch.client.IndexDefinition Maven / Gradle / Ivy

package io.redisearch.client;

import java.util.List;

import io.redisearch.Keywords;

/**
 * IndexDefinition encapsulates configuration for index definition creation 
 * and should be given to the client on index creation
 */
public class IndexDefinition {
  
  public enum Type {
    HASH
  }
  
  private Type type = Type.HASH;
  private boolean async = false; 
  private String[] prefixes;
  private String filter;
  private String languageField;
  private String language;
  private String scoreFiled;
  private double score = 1.0; // Default score when score isn't defined 
  private String payloadField;
  
  public Type getType() {
    return type;
  }
  
  public IndexDefinition setType(Type type) {
    this.type = type;
    return this;    
  }
  
  public boolean isAsync() {
    return async;
  }
  public IndexDefinition setAsync(boolean async) {
    this.async = async;
    return this;    
  }
  
  public String[] getPrefixes() {
    return prefixes;
  }
  
  public IndexDefinition setPrefixes(String... prefixes) {
    this.prefixes = prefixes;
    return this;    
  }
  
  public String getFilter() {
    return filter;
  }
  
  public IndexDefinition setFilter(String filter) {
    this.filter = filter;
    return this;    
  }
  
  public String getLanguageField() {
    return languageField;
  }
  
  public IndexDefinition setLanguageField(String languageField) {
    this.languageField = languageField;
    return this;    
  }
  public String getLanguage() {
    return language;
  }
  
  public IndexDefinition setLanguage(String language) {
    this.language = language;
    return this;    
  }
  
  public String getScoreFiled() {
    return scoreFiled;
  }
  
  public IndexDefinition setScoreFiled(String scoreFiled) {
    this.scoreFiled = scoreFiled;
    return this;    
  }
  
  public double getScore() {
    return score;
  }
  
  public IndexDefinition setScore(double score) {
    this.score = score;
    return this;
  }

  public String getPayloadField() {
    return payloadField;
  }
  
  public IndexDefinition setPayloadField(String payloadField) {
    this.payloadField = payloadField;
    return this;
  }

  public void serializeRedisArgs(List args) {
    if (type != null) {
      args.add(Keywords.ON.name());
      args.add(type.name());
      
      if (async) {
        args.add(Keywords.ASYNC.name());
      }

      if (prefixes != null && prefixes.length>0) {
        args.add(Keywords.PREFIX.name());
        args.add(Integer.toString(prefixes.length));
        for(String prefix : prefixes) {
          args.add(prefix);
        }
      }
      
      if (filter != null) {
        args.add(Keywords.FILTER.name());
        args.add(filter);
      }
      
      if (languageField != null) {
        args.add(Keywords.LANGUAGE_FIELD.name());
        args.add(languageField);      
      }
      
      if (language != null) {
        args.add(Keywords.LANGUAGE.name());
        args.add(language);      
      }
      
      if (scoreFiled != null) {
        args.add(Keywords.SCORE_FIELD.name());
        args.add(scoreFiled);      
      }
      
      if (score != 1.0) {
        args.add(Keywords.SCORE.name());
        args.add(Double.toString(score));      
      }
      
      if (payloadField != null) {
        args.add(Keywords.PAYLOAD_FIELD.name());
        args.add(payloadField);      
      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy