ShingleTokenFilter.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.search.documents.indexes.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
 * Creates combinations of tokens as a single token. This token filter is
 * implemented using Apache Lucene.
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@odata.type")
@JsonTypeName("#Microsoft.Azure.Search.ShingleTokenFilter")
@Fluent
public final class ShingleTokenFilter extends TokenFilter {
    /*
     * The maximum shingle size. Default and minimum value is 2.
     */
    @JsonProperty(value = "maxShingleSize")
    private Integer maxShingleSize;

    /*
     * The minimum shingle size. Default and minimum value is 2. Must be less
     * than the value of maxShingleSize.
     */
    @JsonProperty(value = "minShingleSize")
    private Integer minShingleSize;

    /*
     * A value indicating whether the output stream will contain the input
     * tokens (unigrams) as well as shingles. Default is true.
     */
    @JsonProperty(value = "outputUnigrams")
    private Boolean outputUnigrams;

    /*
     * A value indicating whether to output unigrams for those times when no
     * shingles are available. This property takes precedence when
     * outputUnigrams is set to false. Default is false.
     */
    @JsonProperty(value = "outputUnigramsIfNoShingles")
    private Boolean outputUnigramsIfNoShingles;

    /*
     * The string to use when joining adjacent tokens to form a shingle.
     * Default is a single space (" ").
     */
    @JsonProperty(value = "tokenSeparator")
    private String tokenSeparator;

    /*
     * The string to insert for each position at which there is no token.
     * Default is an underscore ("_").
     */
    @JsonProperty(value = "filterToken")
    private String filterToken;

    /**
     * Constructor of {@link ShingleTokenFilter}.
     *
     * @param name The name of the token filter. It must only contain letters, digits,
     * spaces, dashes or underscores, can only start and end with alphanumeric
     * characters, and is limited to 128 characters.
     */
    public ShingleTokenFilter(String name) {
        super(name);
    }

    /**
     * Get the maxShingleSize property: The maximum shingle size. Default and
     * minimum value is 2.
     *
     * @return the maxShingleSize value.
     */
    public Integer getMaxShingleSize() {
        return this.maxShingleSize;
    }

    /**
     * Set the maxShingleSize property: The maximum shingle size. Default and
     * minimum value is 2.
     *
     * @param maxShingleSize the maxShingleSize value to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setMaxShingleSize(Integer maxShingleSize) {
        this.maxShingleSize = maxShingleSize;
        return this;
    }

    /**
     * Get the minShingleSize property: The minimum shingle size. Default and
     * minimum value is 2. Must be less than the value of maxShingleSize.
     *
     * @return the minShingleSize value.
     */
    public Integer getMinShingleSize() {
        return this.minShingleSize;
    }

    /**
     * Set the minShingleSize property: The minimum shingle size. Default and
     * minimum value is 2. Must be less than the value of maxShingleSize.
     *
     * @param minShingleSize the minShingleSize value to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setMinShingleSize(Integer minShingleSize) {
        this.minShingleSize = minShingleSize;
        return this;
    }

    /**
     * Get the outputUnigrams property: A value indicating whether the output
     * stream will contain the input tokens (unigrams) as well as shingles.
     * Default is true.
     *
     * @return the outputUnigrams value.
     */
    public Boolean areOutputUnigrams() {
        return this.outputUnigrams;
    }

    /**
     * Set the outputUnigrams property: A value indicating whether the output
     * stream will contain the input tokens (unigrams) as well as shingles.
     * Default is true.
     *
     * @param outputUnigrams the outputUnigrams value to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setOutputUnigrams(Boolean outputUnigrams) {
        this.outputUnigrams = outputUnigrams;
        return this;
    }

    /**
     * Get the outputUnigramsIfNoShingles property: A value indicating whether
     * to output unigrams for those times when no shingles are available. This
     * property takes precedence when outputUnigrams is set to false. Default
     * is false.
     *
     * @return the outputUnigramsIfNoShingles value.
     */
    public Boolean areOutputUnigramsIfNoShingles() {
        return this.outputUnigramsIfNoShingles;
    }

    /**
     * Set the outputUnigramsIfNoShingles property: A value indicating whether
     * to output unigrams for those times when no shingles are available. This
     * property takes precedence when outputUnigrams is set to false. Default
     * is false.
     *
     * @param outputUnigramsIfNoShingles the outputUnigramsIfNoShingles value
     * to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setOutputUnigramsIfNoShingles(Boolean outputUnigramsIfNoShingles) {
        this.outputUnigramsIfNoShingles = outputUnigramsIfNoShingles;
        return this;
    }

    /**
     * Get the tokenSeparator property: The string to use when joining adjacent
     * tokens to form a shingle. Default is a single space (" ").
     *
     * @return the tokenSeparator value.
     */
    public String getTokenSeparator() {
        return this.tokenSeparator;
    }

    /**
     * Set the tokenSeparator property: The string to use when joining adjacent
     * tokens to form a shingle. Default is a single space (" ").
     *
     * @param tokenSeparator the tokenSeparator value to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setTokenSeparator(String tokenSeparator) {
        this.tokenSeparator = tokenSeparator;
        return this;
    }

    /**
     * Get the filterToken property: The string to insert for each position at
     * which there is no token. Default is an underscore ("_").
     *
     * @return the filterToken value.
     */
    public String getFilterToken() {
        return this.filterToken;
    }

    /**
     * Set the filterToken property: The string to insert for each position at
     * which there is no token. Default is an underscore ("_").
     *
     * @param filterToken the filterToken value to set.
     * @return the ShingleTokenFilter object itself.
     */
    public ShingleTokenFilter setFilterToken(String filterToken) {
        this.filterToken = filterToken;
        return this;
    }
}