// Contains features required for Ranker model inference and training.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package assist_ranker;

message ExamplePreprocessorConfig {
  // A list of features names for which you want to do special handling if
  // the feature is missing in the RankerExample.
  repeated string missing_features = 1;

  // Boundaries to bucketize a feature.
  message Boundaries { repeated float boundaries = 1; }

  // A map of feature_name to boundaries for bucketizing this feature.
  map<string, Boundaries> bucketizers = 2;

  // A map from feature_fullnames to indices for vectorizing a RankerExample.
  // A feature fullname is defined as:
  //   (1) feature_name if it's bool_value, int64_value or float_value.
  //   (2) a combination of feature_name and feature_value if it's string_value
  //       or i-th element of a string_list.
  map<string, int32> feature_indices = 3;

  // A map from feature name to a float value to normalize the original value.
  // The new feature value is set as float_value of
  // GetFeatureValueAsFloat(feature) / normalizers[feature_name]
  // The specified feature must be convertible to float (e.g. int32 or float).
  map<string, float> normalizers = 4;

  // Features inside this list will be converted to string_value. bool_value,
  // int32_value will be converted by base::NumberToString; string_value will be
  // kept as original; fails for other feature_types.
  repeated string convert_to_string_features = 5;
}
