/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * A collection of data corresponding to a single title candidate. This will be used as: - a
 * collection of signals to score and select titles in production - an input for training title
 * models NOTE: When adding a floating point value for Ranklab purposes, use float32 instead of
 * float64, because some of the Ranklab library still does not fully support float64. Next ID: 67
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class QualityPreviewRanklabTitle extends com.google.api.client.json.GenericJson {

  /**
   * `goldmine_final_score` value in base.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float baseGoldmineFinalScore;

  /**
   * The ranking index of this candidate (starting from 0) in base.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer baseRank;

  /**
   * Title source type.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String dataSourceType;

  /**
   * Document language for this title. It is used for model inference and hence flattened into
   * RanklabTitle instead of RanklabDoc.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String docLang;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float docRelevance;

  /**
   * Numbers of duplicated tokens. For example, duplicated tokens for a title "dog cat cat cat" is 2
   * (for 2 extra "cat").
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer dupTokens;

  /**
   * A score assigned for candidates forced by experiments.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer forcedExperimentScore;

  /**
   * The score for `text` computed in Goldmine (AlternativeTitlesAnnotator) with additional scoring
   * adjustments applied. Currently includes Blockbert scoring.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineAdjustedScore;

  /**
   * =============================================================== Internal boost feature signals
   * used to compute `goldmine_page_score`. They are exposed only for debugging purpose.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineAnchorFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineAnchorSupportOnly;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineBlockbertFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineBodyFactor;

  /**
   * Deprecated: use `goldmine_page_score` instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineFinalScore;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineForeign;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineGeometryFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineHasBoilerplateInTitle;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineHasTitleNgram;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineHeaderIsH1;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineHeadingFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineIsBadTitle;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineIsHeadingTag;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineIsTitleTag;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineIsTruncated;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineLocalTitleFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineLocationFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineNavboostFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineOgTitleFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineOnPageDemotionFactor;

  /**
   * The number of BoostFeatures present in AlternativeTitlesGeneator but not populated above.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer goldmineOtherBoostFeatureCount;

  /**
   * The score for the `text` computed in Goldmine (AlternativeTitlesAnnotator).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldminePageScore;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineReadabilityScore;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineSalientTermFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineSitenameFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineSubHeading;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineTitleTagFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineTrustFactor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float goldmineUrlMatchFactor;

  /**
   * Whether a title contains site information.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean hasSiteInfo;

  /**
   * Whether this title candidate is truncated or not.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean isTruncated;

  /**
   * Whether a title is valid (i.e., not empty).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean isValid;

  /**
   * How good or bad this title is as a `data_source_type` title type.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String perTypeQuality;

  /**
   * Rank of this title among titles of the same `data_source_type`.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer perTypeRank;

  /**
   * Numbers of body title tokens covered by this title, in range of [0, 1]. Not set if body title
   * is considered "bad".
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float percentBodyTitleTokensCovered;

  /**
   * Numbers of tokens covered by body title, in range of [0, 1]. Not set if body title is
   * considered "bad".
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float percentTokensCoveredByBodyTitle;

  /**
   * The number of (different) terms with a query match. It may include the match with any SQuery
   * node (e.g., synonyms).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer queryMatch;

  /**
   * A number of matched query terms divided by the number of all terms in query. Synonyms or other
   * terms that appear in squery but not in the raw query are excluded. Takes values in [0, 1].
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float queryMatchFraction;

  /**
   * Deprecated experimental features.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float queryRelevance;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceGeometry;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceHeadingTag;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceLocalTitle;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceOffdomainAnchor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceOndomainAnchor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceOnsiteAnchor;

  /**
   * =============================================================== Title candidate's original
   * source information. They are populated only for non-production environment for debugging
   * purposes.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceTitleTag;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean sourceTransliteratedTitle;

  /**
   * `goldmine_final_score` value in test.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float testGoldmineFinalScore;

  /**
   * The ranking index of this candidate (starting from 0) in test.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer testRank;

  /**
   * Title text to display. Populated for debugging purpose only, and won't be used for model
   * inferences. This represetns the exact display text in SERP, with modifications like truncations
   * or site-title appending involved.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String text;

  /**
   * A rendered width of this title divided by the max allowed width for title. Takes values in [0,
   * 1].
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float widthFraction;

  /**
   * `goldmine_final_score` value in base.
   * @return value or {@code null} for none
   */
  public java.lang.Float getBaseGoldmineFinalScore() {
    return baseGoldmineFinalScore;
  }

  /**
   * `goldmine_final_score` value in base.
   * @param baseGoldmineFinalScore baseGoldmineFinalScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setBaseGoldmineFinalScore(java.lang.Float baseGoldmineFinalScore) {
    this.baseGoldmineFinalScore = baseGoldmineFinalScore;
    return this;
  }

  /**
   * The ranking index of this candidate (starting from 0) in base.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getBaseRank() {
    return baseRank;
  }

  /**
   * The ranking index of this candidate (starting from 0) in base.
   * @param baseRank baseRank or {@code null} for none
   */
  public QualityPreviewRanklabTitle setBaseRank(java.lang.Integer baseRank) {
    this.baseRank = baseRank;
    return this;
  }

  /**
   * Title source type.
   * @return value or {@code null} for none
   */
  public java.lang.String getDataSourceType() {
    return dataSourceType;
  }

  /**
   * Title source type.
   * @param dataSourceType dataSourceType or {@code null} for none
   */
  public QualityPreviewRanklabTitle setDataSourceType(java.lang.String dataSourceType) {
    this.dataSourceType = dataSourceType;
    return this;
  }

  /**
   * Document language for this title. It is used for model inference and hence flattened into
   * RanklabTitle instead of RanklabDoc.
   * @return value or {@code null} for none
   */
  public java.lang.String getDocLang() {
    return docLang;
  }

  /**
   * Document language for this title. It is used for model inference and hence flattened into
   * RanklabTitle instead of RanklabDoc.
   * @param docLang docLang or {@code null} for none
   */
  public QualityPreviewRanklabTitle setDocLang(java.lang.String docLang) {
    this.docLang = docLang;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getDocRelevance() {
    return docRelevance;
  }

  /**
   * @param docRelevance docRelevance or {@code null} for none
   */
  public QualityPreviewRanklabTitle setDocRelevance(java.lang.Float docRelevance) {
    this.docRelevance = docRelevance;
    return this;
  }

  /**
   * Numbers of duplicated tokens. For example, duplicated tokens for a title "dog cat cat cat" is 2
   * (for 2 extra "cat").
   * @return value or {@code null} for none
   */
  public java.lang.Integer getDupTokens() {
    return dupTokens;
  }

  /**
   * Numbers of duplicated tokens. For example, duplicated tokens for a title "dog cat cat cat" is 2
   * (for 2 extra "cat").
   * @param dupTokens dupTokens or {@code null} for none
   */
  public QualityPreviewRanklabTitle setDupTokens(java.lang.Integer dupTokens) {
    this.dupTokens = dupTokens;
    return this;
  }

  /**
   * A score assigned for candidates forced by experiments.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getForcedExperimentScore() {
    return forcedExperimentScore;
  }

  /**
   * A score assigned for candidates forced by experiments.
   * @param forcedExperimentScore forcedExperimentScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setForcedExperimentScore(java.lang.Integer forcedExperimentScore) {
    this.forcedExperimentScore = forcedExperimentScore;
    return this;
  }

  /**
   * The score for `text` computed in Goldmine (AlternativeTitlesAnnotator) with additional scoring
   * adjustments applied. Currently includes Blockbert scoring.
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineAdjustedScore() {
    return goldmineAdjustedScore;
  }

  /**
   * The score for `text` computed in Goldmine (AlternativeTitlesAnnotator) with additional scoring
   * adjustments applied. Currently includes Blockbert scoring.
   * @param goldmineAdjustedScore goldmineAdjustedScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineAdjustedScore(java.lang.Float goldmineAdjustedScore) {
    this.goldmineAdjustedScore = goldmineAdjustedScore;
    return this;
  }

  /**
   * =============================================================== Internal boost feature signals
   * used to compute `goldmine_page_score`. They are exposed only for debugging purpose.
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineAnchorFactor() {
    return goldmineAnchorFactor;
  }

  /**
   * =============================================================== Internal boost feature signals
   * used to compute `goldmine_page_score`. They are exposed only for debugging purpose.
   * @param goldmineAnchorFactor goldmineAnchorFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineAnchorFactor(java.lang.Float goldmineAnchorFactor) {
    this.goldmineAnchorFactor = goldmineAnchorFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineAnchorSupportOnly() {
    return goldmineAnchorSupportOnly;
  }

  /**
   * @param goldmineAnchorSupportOnly goldmineAnchorSupportOnly or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineAnchorSupportOnly(java.lang.Float goldmineAnchorSupportOnly) {
    this.goldmineAnchorSupportOnly = goldmineAnchorSupportOnly;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineBlockbertFactor() {
    return goldmineBlockbertFactor;
  }

  /**
   * @param goldmineBlockbertFactor goldmineBlockbertFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineBlockbertFactor(java.lang.Float goldmineBlockbertFactor) {
    this.goldmineBlockbertFactor = goldmineBlockbertFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineBodyFactor() {
    return goldmineBodyFactor;
  }

  /**
   * @param goldmineBodyFactor goldmineBodyFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineBodyFactor(java.lang.Float goldmineBodyFactor) {
    this.goldmineBodyFactor = goldmineBodyFactor;
    return this;
  }

  /**
   * Deprecated: use `goldmine_page_score` instead.
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineFinalScore() {
    return goldmineFinalScore;
  }

  /**
   * Deprecated: use `goldmine_page_score` instead.
   * @param goldmineFinalScore goldmineFinalScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineFinalScore(java.lang.Float goldmineFinalScore) {
    this.goldmineFinalScore = goldmineFinalScore;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineForeign() {
    return goldmineForeign;
  }

  /**
   * @param goldmineForeign goldmineForeign or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineForeign(java.lang.Float goldmineForeign) {
    this.goldmineForeign = goldmineForeign;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineGeometryFactor() {
    return goldmineGeometryFactor;
  }

  /**
   * @param goldmineGeometryFactor goldmineGeometryFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineGeometryFactor(java.lang.Float goldmineGeometryFactor) {
    this.goldmineGeometryFactor = goldmineGeometryFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineHasBoilerplateInTitle() {
    return goldmineHasBoilerplateInTitle;
  }

  /**
   * @param goldmineHasBoilerplateInTitle goldmineHasBoilerplateInTitle or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineHasBoilerplateInTitle(java.lang.Float goldmineHasBoilerplateInTitle) {
    this.goldmineHasBoilerplateInTitle = goldmineHasBoilerplateInTitle;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineHasTitleNgram() {
    return goldmineHasTitleNgram;
  }

  /**
   * @param goldmineHasTitleNgram goldmineHasTitleNgram or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineHasTitleNgram(java.lang.Float goldmineHasTitleNgram) {
    this.goldmineHasTitleNgram = goldmineHasTitleNgram;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineHeaderIsH1() {
    return goldmineHeaderIsH1;
  }

  /**
   * @param goldmineHeaderIsH1 goldmineHeaderIsH1 or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineHeaderIsH1(java.lang.Float goldmineHeaderIsH1) {
    this.goldmineHeaderIsH1 = goldmineHeaderIsH1;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineHeadingFactor() {
    return goldmineHeadingFactor;
  }

  /**
   * @param goldmineHeadingFactor goldmineHeadingFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineHeadingFactor(java.lang.Float goldmineHeadingFactor) {
    this.goldmineHeadingFactor = goldmineHeadingFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineIsBadTitle() {
    return goldmineIsBadTitle;
  }

  /**
   * @param goldmineIsBadTitle goldmineIsBadTitle or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineIsBadTitle(java.lang.Float goldmineIsBadTitle) {
    this.goldmineIsBadTitle = goldmineIsBadTitle;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineIsHeadingTag() {
    return goldmineIsHeadingTag;
  }

  /**
   * @param goldmineIsHeadingTag goldmineIsHeadingTag or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineIsHeadingTag(java.lang.Float goldmineIsHeadingTag) {
    this.goldmineIsHeadingTag = goldmineIsHeadingTag;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineIsTitleTag() {
    return goldmineIsTitleTag;
  }

  /**
   * @param goldmineIsTitleTag goldmineIsTitleTag or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineIsTitleTag(java.lang.Float goldmineIsTitleTag) {
    this.goldmineIsTitleTag = goldmineIsTitleTag;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineIsTruncated() {
    return goldmineIsTruncated;
  }

  /**
   * @param goldmineIsTruncated goldmineIsTruncated or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineIsTruncated(java.lang.Float goldmineIsTruncated) {
    this.goldmineIsTruncated = goldmineIsTruncated;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineLocalTitleFactor() {
    return goldmineLocalTitleFactor;
  }

  /**
   * @param goldmineLocalTitleFactor goldmineLocalTitleFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineLocalTitleFactor(java.lang.Float goldmineLocalTitleFactor) {
    this.goldmineLocalTitleFactor = goldmineLocalTitleFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineLocationFactor() {
    return goldmineLocationFactor;
  }

  /**
   * @param goldmineLocationFactor goldmineLocationFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineLocationFactor(java.lang.Float goldmineLocationFactor) {
    this.goldmineLocationFactor = goldmineLocationFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineNavboostFactor() {
    return goldmineNavboostFactor;
  }

  /**
   * @param goldmineNavboostFactor goldmineNavboostFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineNavboostFactor(java.lang.Float goldmineNavboostFactor) {
    this.goldmineNavboostFactor = goldmineNavboostFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineOgTitleFactor() {
    return goldmineOgTitleFactor;
  }

  /**
   * @param goldmineOgTitleFactor goldmineOgTitleFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineOgTitleFactor(java.lang.Float goldmineOgTitleFactor) {
    this.goldmineOgTitleFactor = goldmineOgTitleFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineOnPageDemotionFactor() {
    return goldmineOnPageDemotionFactor;
  }

  /**
   * @param goldmineOnPageDemotionFactor goldmineOnPageDemotionFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineOnPageDemotionFactor(java.lang.Float goldmineOnPageDemotionFactor) {
    this.goldmineOnPageDemotionFactor = goldmineOnPageDemotionFactor;
    return this;
  }

  /**
   * The number of BoostFeatures present in AlternativeTitlesGeneator but not populated above.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getGoldmineOtherBoostFeatureCount() {
    return goldmineOtherBoostFeatureCount;
  }

  /**
   * The number of BoostFeatures present in AlternativeTitlesGeneator but not populated above.
   * @param goldmineOtherBoostFeatureCount goldmineOtherBoostFeatureCount or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineOtherBoostFeatureCount(java.lang.Integer goldmineOtherBoostFeatureCount) {
    this.goldmineOtherBoostFeatureCount = goldmineOtherBoostFeatureCount;
    return this;
  }

  /**
   * The score for the `text` computed in Goldmine (AlternativeTitlesAnnotator).
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldminePageScore() {
    return goldminePageScore;
  }

  /**
   * The score for the `text` computed in Goldmine (AlternativeTitlesAnnotator).
   * @param goldminePageScore goldminePageScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldminePageScore(java.lang.Float goldminePageScore) {
    this.goldminePageScore = goldminePageScore;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineReadabilityScore() {
    return goldmineReadabilityScore;
  }

  /**
   * @param goldmineReadabilityScore goldmineReadabilityScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineReadabilityScore(java.lang.Float goldmineReadabilityScore) {
    this.goldmineReadabilityScore = goldmineReadabilityScore;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineSalientTermFactor() {
    return goldmineSalientTermFactor;
  }

  /**
   * @param goldmineSalientTermFactor goldmineSalientTermFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineSalientTermFactor(java.lang.Float goldmineSalientTermFactor) {
    this.goldmineSalientTermFactor = goldmineSalientTermFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineSitenameFactor() {
    return goldmineSitenameFactor;
  }

  /**
   * @param goldmineSitenameFactor goldmineSitenameFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineSitenameFactor(java.lang.Float goldmineSitenameFactor) {
    this.goldmineSitenameFactor = goldmineSitenameFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineSubHeading() {
    return goldmineSubHeading;
  }

  /**
   * @param goldmineSubHeading goldmineSubHeading or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineSubHeading(java.lang.Float goldmineSubHeading) {
    this.goldmineSubHeading = goldmineSubHeading;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineTitleTagFactor() {
    return goldmineTitleTagFactor;
  }

  /**
   * @param goldmineTitleTagFactor goldmineTitleTagFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineTitleTagFactor(java.lang.Float goldmineTitleTagFactor) {
    this.goldmineTitleTagFactor = goldmineTitleTagFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineTrustFactor() {
    return goldmineTrustFactor;
  }

  /**
   * @param goldmineTrustFactor goldmineTrustFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineTrustFactor(java.lang.Float goldmineTrustFactor) {
    this.goldmineTrustFactor = goldmineTrustFactor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Float getGoldmineUrlMatchFactor() {
    return goldmineUrlMatchFactor;
  }

  /**
   * @param goldmineUrlMatchFactor goldmineUrlMatchFactor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setGoldmineUrlMatchFactor(java.lang.Float goldmineUrlMatchFactor) {
    this.goldmineUrlMatchFactor = goldmineUrlMatchFactor;
    return this;
  }

  /**
   * Whether a title contains site information.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getHasSiteInfo() {
    return hasSiteInfo;
  }

  /**
   * Whether a title contains site information.
   * @param hasSiteInfo hasSiteInfo or {@code null} for none
   */
  public QualityPreviewRanklabTitle setHasSiteInfo(java.lang.Boolean hasSiteInfo) {
    this.hasSiteInfo = hasSiteInfo;
    return this;
  }

  /**
   * Whether this title candidate is truncated or not.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getIsTruncated() {
    return isTruncated;
  }

  /**
   * Whether this title candidate is truncated or not.
   * @param isTruncated isTruncated or {@code null} for none
   */
  public QualityPreviewRanklabTitle setIsTruncated(java.lang.Boolean isTruncated) {
    this.isTruncated = isTruncated;
    return this;
  }

  /**
   * Whether a title is valid (i.e., not empty).
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getIsValid() {
    return isValid;
  }

  /**
   * Whether a title is valid (i.e., not empty).
   * @param isValid isValid or {@code null} for none
   */
  public QualityPreviewRanklabTitle setIsValid(java.lang.Boolean isValid) {
    this.isValid = isValid;
    return this;
  }

  /**
   * How good or bad this title is as a `data_source_type` title type.
   * @return value or {@code null} for none
   */
  public java.lang.String getPerTypeQuality() {
    return perTypeQuality;
  }

  /**
   * How good or bad this title is as a `data_source_type` title type.
   * @param perTypeQuality perTypeQuality or {@code null} for none
   */
  public QualityPreviewRanklabTitle setPerTypeQuality(java.lang.String perTypeQuality) {
    this.perTypeQuality = perTypeQuality;
    return this;
  }

  /**
   * Rank of this title among titles of the same `data_source_type`.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getPerTypeRank() {
    return perTypeRank;
  }

  /**
   * Rank of this title among titles of the same `data_source_type`.
   * @param perTypeRank perTypeRank or {@code null} for none
   */
  public QualityPreviewRanklabTitle setPerTypeRank(java.lang.Integer perTypeRank) {
    this.perTypeRank = perTypeRank;
    return this;
  }

  /**
   * Numbers of body title tokens covered by this title, in range of [0, 1]. Not set if body title
   * is considered "bad".
   * @return value or {@code null} for none
   */
  public java.lang.Float getPercentBodyTitleTokensCovered() {
    return percentBodyTitleTokensCovered;
  }

  /**
   * Numbers of body title tokens covered by this title, in range of [0, 1]. Not set if body title
   * is considered "bad".
   * @param percentBodyTitleTokensCovered percentBodyTitleTokensCovered or {@code null} for none
   */
  public QualityPreviewRanklabTitle setPercentBodyTitleTokensCovered(java.lang.Float percentBodyTitleTokensCovered) {
    this.percentBodyTitleTokensCovered = percentBodyTitleTokensCovered;
    return this;
  }

  /**
   * Numbers of tokens covered by body title, in range of [0, 1]. Not set if body title is
   * considered "bad".
   * @return value or {@code null} for none
   */
  public java.lang.Float getPercentTokensCoveredByBodyTitle() {
    return percentTokensCoveredByBodyTitle;
  }

  /**
   * Numbers of tokens covered by body title, in range of [0, 1]. Not set if body title is
   * considered "bad".
   * @param percentTokensCoveredByBodyTitle percentTokensCoveredByBodyTitle or {@code null} for none
   */
  public QualityPreviewRanklabTitle setPercentTokensCoveredByBodyTitle(java.lang.Float percentTokensCoveredByBodyTitle) {
    this.percentTokensCoveredByBodyTitle = percentTokensCoveredByBodyTitle;
    return this;
  }

  /**
   * The number of (different) terms with a query match. It may include the match with any SQuery
   * node (e.g., synonyms).
   * @return value or {@code null} for none
   */
  public java.lang.Integer getQueryMatch() {
    return queryMatch;
  }

  /**
   * The number of (different) terms with a query match. It may include the match with any SQuery
   * node (e.g., synonyms).
   * @param queryMatch queryMatch or {@code null} for none
   */
  public QualityPreviewRanklabTitle setQueryMatch(java.lang.Integer queryMatch) {
    this.queryMatch = queryMatch;
    return this;
  }

  /**
   * A number of matched query terms divided by the number of all terms in query. Synonyms or other
   * terms that appear in squery but not in the raw query are excluded. Takes values in [0, 1].
   * @return value or {@code null} for none
   */
  public java.lang.Float getQueryMatchFraction() {
    return queryMatchFraction;
  }

  /**
   * A number of matched query terms divided by the number of all terms in query. Synonyms or other
   * terms that appear in squery but not in the raw query are excluded. Takes values in [0, 1].
   * @param queryMatchFraction queryMatchFraction or {@code null} for none
   */
  public QualityPreviewRanklabTitle setQueryMatchFraction(java.lang.Float queryMatchFraction) {
    this.queryMatchFraction = queryMatchFraction;
    return this;
  }

  /**
   * Deprecated experimental features.
   * @return value or {@code null} for none
   */
  public java.lang.Float getQueryRelevance() {
    return queryRelevance;
  }

  /**
   * Deprecated experimental features.
   * @param queryRelevance queryRelevance or {@code null} for none
   */
  public QualityPreviewRanklabTitle setQueryRelevance(java.lang.Float queryRelevance) {
    this.queryRelevance = queryRelevance;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceGeometry() {
    return sourceGeometry;
  }

  /**
   * @param sourceGeometry sourceGeometry or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceGeometry(java.lang.Boolean sourceGeometry) {
    this.sourceGeometry = sourceGeometry;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceHeadingTag() {
    return sourceHeadingTag;
  }

  /**
   * @param sourceHeadingTag sourceHeadingTag or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceHeadingTag(java.lang.Boolean sourceHeadingTag) {
    this.sourceHeadingTag = sourceHeadingTag;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceLocalTitle() {
    return sourceLocalTitle;
  }

  /**
   * @param sourceLocalTitle sourceLocalTitle or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceLocalTitle(java.lang.Boolean sourceLocalTitle) {
    this.sourceLocalTitle = sourceLocalTitle;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceOffdomainAnchor() {
    return sourceOffdomainAnchor;
  }

  /**
   * @param sourceOffdomainAnchor sourceOffdomainAnchor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceOffdomainAnchor(java.lang.Boolean sourceOffdomainAnchor) {
    this.sourceOffdomainAnchor = sourceOffdomainAnchor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceOndomainAnchor() {
    return sourceOndomainAnchor;
  }

  /**
   * @param sourceOndomainAnchor sourceOndomainAnchor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceOndomainAnchor(java.lang.Boolean sourceOndomainAnchor) {
    this.sourceOndomainAnchor = sourceOndomainAnchor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceOnsiteAnchor() {
    return sourceOnsiteAnchor;
  }

  /**
   * @param sourceOnsiteAnchor sourceOnsiteAnchor or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceOnsiteAnchor(java.lang.Boolean sourceOnsiteAnchor) {
    this.sourceOnsiteAnchor = sourceOnsiteAnchor;
    return this;
  }

  /**
   * =============================================================== Title candidate's original
   * source information. They are populated only for non-production environment for debugging
   * purposes.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceTitleTag() {
    return sourceTitleTag;
  }

  /**
   * =============================================================== Title candidate's original
   * source information. They are populated only for non-production environment for debugging
   * purposes.
   * @param sourceTitleTag sourceTitleTag or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceTitleTag(java.lang.Boolean sourceTitleTag) {
    this.sourceTitleTag = sourceTitleTag;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSourceTransliteratedTitle() {
    return sourceTransliteratedTitle;
  }

  /**
   * @param sourceTransliteratedTitle sourceTransliteratedTitle or {@code null} for none
   */
  public QualityPreviewRanklabTitle setSourceTransliteratedTitle(java.lang.Boolean sourceTransliteratedTitle) {
    this.sourceTransliteratedTitle = sourceTransliteratedTitle;
    return this;
  }

  /**
   * `goldmine_final_score` value in test.
   * @return value or {@code null} for none
   */
  public java.lang.Float getTestGoldmineFinalScore() {
    return testGoldmineFinalScore;
  }

  /**
   * `goldmine_final_score` value in test.
   * @param testGoldmineFinalScore testGoldmineFinalScore or {@code null} for none
   */
  public QualityPreviewRanklabTitle setTestGoldmineFinalScore(java.lang.Float testGoldmineFinalScore) {
    this.testGoldmineFinalScore = testGoldmineFinalScore;
    return this;
  }

  /**
   * The ranking index of this candidate (starting from 0) in test.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getTestRank() {
    return testRank;
  }

  /**
   * The ranking index of this candidate (starting from 0) in test.
   * @param testRank testRank or {@code null} for none
   */
  public QualityPreviewRanklabTitle setTestRank(java.lang.Integer testRank) {
    this.testRank = testRank;
    return this;
  }

  /**
   * Title text to display. Populated for debugging purpose only, and won't be used for model
   * inferences. This represetns the exact display text in SERP, with modifications like truncations
   * or site-title appending involved.
   * @return value or {@code null} for none
   */
  public java.lang.String getText() {
    return text;
  }

  /**
   * Title text to display. Populated for debugging purpose only, and won't be used for model
   * inferences. This represetns the exact display text in SERP, with modifications like truncations
   * or site-title appending involved.
   * @param text text or {@code null} for none
   */
  public QualityPreviewRanklabTitle setText(java.lang.String text) {
    this.text = text;
    return this;
  }

  /**
   * A rendered width of this title divided by the max allowed width for title. Takes values in [0,
   * 1].
   * @return value or {@code null} for none
   */
  public java.lang.Float getWidthFraction() {
    return widthFraction;
  }

  /**
   * A rendered width of this title divided by the max allowed width for title. Takes values in [0,
   * 1].
   * @param widthFraction widthFraction or {@code null} for none
   */
  public QualityPreviewRanklabTitle setWidthFraction(java.lang.Float widthFraction) {
    this.widthFraction = widthFraction;
    return this;
  }

  @Override
  public QualityPreviewRanklabTitle set(String fieldName, Object value) {
    return (QualityPreviewRanklabTitle) super.set(fieldName, value);
  }

  @Override
  public QualityPreviewRanklabTitle clone() {
    return (QualityPreviewRanklabTitle) super.clone();
  }

}
