IndexingParameters.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.azure.core.util.CoreUtils;
- import com.fasterxml.jackson.annotation.JsonProperty;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * Represents parameters for indexer execution.
- */
- @Fluent
- public final class IndexingParameters {
- /*
- * The number of items that are read from the data source and indexed as a
- * single batch in order to improve performance. The default depends on the
- * data source type.
- */
- @JsonProperty(value = "batchSize")
- private Integer batchSize;
- /*
- * The maximum number of items that can fail indexing for indexer execution
- * to still be considered successful. -1 means no limit. Default is 0.
- */
- @JsonProperty(value = "maxFailedItems")
- private Integer maxFailedItems;
- /*
- * The maximum number of items in a single batch that can fail indexing for
- * the batch to still be considered successful. -1 means no limit. Default
- * is 0.
- */
- @JsonProperty(value = "maxFailedItemsPerBatch")
- private Integer maxFailedItemsPerBatch;
- /*
- * A dictionary of indexer-specific configuration properties. Each name is
- * the name of a specific property. Each value must be of a primitive type.
- */
- @JsonProperty(value = "configuration")
- private Map<String, Object> configuration;
- /**
- * Get the batchSize property: The number of items that are read from the data source and indexed as a single batch
- * in order to improve performance. The default depends on the data source type.
- *
- * @return the batchSize value.
- */
- public Integer getBatchSize() {
- return this.batchSize;
- }
- /**
- * Set the batchSize property: The number of items that are read from the data source and indexed as a single batch
- * in order to improve performance. The default depends on the data source type.
- *
- * @param batchSize the batchSize value to set.
- * @return the IndexingParameters object itself.
- */
- public IndexingParameters setBatchSize(Integer batchSize) {
- this.batchSize = batchSize;
- return this;
- }
- /**
- * Get the maxFailedItems property: The maximum number of items that can fail indexing for indexer execution to
- * still be considered successful. -1 means no limit. Default is 0.
- *
- * @return the maxFailedItems value.
- */
- public Integer getMaxFailedItems() {
- return this.maxFailedItems;
- }
- /**
- * Set the maxFailedItems property: The maximum number of items that can fail indexing for indexer execution to
- * still be considered successful. -1 means no limit. Default is 0.
- *
- * @param maxFailedItems the maxFailedItems value to set.
- * @return the IndexingParameters object itself.
- */
- public IndexingParameters setMaxFailedItems(Integer maxFailedItems) {
- this.maxFailedItems = maxFailedItems;
- return this;
- }
- /**
- * Get the maxFailedItemsPerBatch property: The maximum number of items in a single batch that can fail indexing for
- * the batch to still be considered successful. -1 means no limit. Default is 0.
- *
- * @return the maxFailedItemsPerBatch value.
- */
- public Integer getMaxFailedItemsPerBatch() {
- return this.maxFailedItemsPerBatch;
- }
- /**
- * Set the maxFailedItemsPerBatch property: The maximum number of items in a single batch that can fail indexing for
- * the batch to still be considered successful. -1 means no limit. Default is 0.
- *
- * @param maxFailedItemsPerBatch the maxFailedItemsPerBatch value to set.
- * @return the IndexingParameters object itself.
- */
- public IndexingParameters setMaxFailedItemsPerBatch(Integer maxFailedItemsPerBatch) {
- this.maxFailedItemsPerBatch = maxFailedItemsPerBatch;
- return this;
- }
- /**
- * Get the configuration property: A dictionary of indexer-specific configuration properties. Each name is the name
- * of a specific property. Each value must be of a primitive type.
- *
- * @return the configuration value.
- */
- public Map<String, Object> getConfiguration() {
- return this.configuration;
- }
- /**
- * Set the configuration property: A dictionary of indexer-specific configuration properties. Each name is the name
- * of a specific property. Each value must be of a primitive type.
- *
- * @param configuration the configuration value to set.
- * @return the IndexingParameters object itself.
- */
- public IndexingParameters setConfiguration(Map<String, Object> configuration) {
- this.configuration = configuration;
- return this;
- }
- /**
- * Get the configuration property: A dictionary of indexer-specific configuration properties. Each name is the name
- * of a specific property. Each value must be of a primitive type.
- *
- * @return the configuration value.
- */
- public IndexingParametersConfiguration getIndexingParametersConfiguration() {
- if (CoreUtils.isNullOrEmpty(this.configuration)) {
- return null;
- }
- IndexingParametersConfiguration configuration = new IndexingParametersConfiguration();
- for (Map.Entry<String, Object> kvp : this.configuration.entrySet()) {
- String key = kvp.getKey();
- if (key == null) {
- continue;
- }
- String value = (kvp.getValue() == null) ? null : String.valueOf(kvp.getValue());
- switch (key) {
- case "parsingMode":
- configuration.setParsingMode(BlobIndexerParsingMode.fromString(value));
- break;
- case "excludedFileNameExtensions":
- configuration.setExcludedFileNameExtensions(value);
- break;
- case "indexedFileNameExtensions":
- configuration.setIndexedFileNameExtensions(value);
- break;
- case "failOnUnsupportedContentType":
- configuration.setFailOnUnsupportedContentType(Boolean.valueOf(value));
- break;
- case "failOnUnprocessableDocument":
- configuration.setFailOnUnprocessableDocument(Boolean.valueOf(value));
- break;
- case "indexStorageMetadataOnlyForOversizedDocuments":
- configuration.setIndexStorageMetadataOnlyForOversizedDocuments(Boolean.valueOf(value));
- break;
- case "delimitedTextHeaders":
- configuration.setDelimitedTextHeaders(value);
- break;
- case "delimitedTextDelimiter":
- configuration.setDelimitedTextDelimiter(value);
- break;
- case "firstLineContainsHeaders":
- configuration.setFirstLineContainsHeaders(Boolean.valueOf(value));
- break;
- case "documentRoot":
- configuration.setDocumentRoot(value);
- break;
- case "dataToExtract":
- configuration.setDataToExtract(BlobIndexerDataToExtract.fromString(value));
- break;
- case "imageAction":
- configuration.setImageAction(BlobIndexerImageAction.fromString(value));
- break;
- case "allowSkillsetToReadFileData":
- configuration.setAllowSkillsetToReadFileData(Boolean.valueOf(value));
- break;
- case "pdfTextRotationAlgorithm":
- configuration.setPdfTextRotationAlgorithm(BlobIndexerPdfTextRotationAlgorithm.fromString(value));
- break;
- case "executionEnvironment":
- configuration.setExecutionEnvironment(IndexerExecutionEnvironment.fromString(value));
- break;
- case "queryTimeout":
- configuration.setQueryTimeout(value);
- break;
- default:
- configuration.setAdditionalProperties(key, value);
- break;
- }
- }
- return configuration;
- }
- /**
- * Set the configuration property: A dictionary of indexer-specific configuration properties. Each name is the name
- * of a specific property. Each value must be of a primitive type.
- *
- * @param configuration the configuration value to set.
- * @return the IndexingParameters object itself.
- */
- public IndexingParameters setIndexingParametersConfiguration(IndexingParametersConfiguration configuration) {
- setConfigurationValue(configuration.getParsingMode(), "parsingMode");
- setConfigurationValue(configuration.getExcludedFileNameExtensions(), "excludedFileNameExtensions");
- setConfigurationValue(configuration.getIndexedFileNameExtensions(), "indexedFileNameExtensions");
- setConfigurationValue(configuration.isFailOnUnsupportedContentType(), "failOnUnsupportedContentType");
- setConfigurationValue(configuration.isFailOnUnprocessableDocument(), "failOnUnprocessableDocument");
- setConfigurationValue(configuration.isIndexStorageMetadataOnlyForOversizedDocuments(),
- "indexStorageMetadataOnlyForOversizedDocuments");
- setConfigurationValue(configuration.getDelimitedTextHeaders(), "delimitedTextHeaders");
- setConfigurationValue(configuration.getDelimitedTextDelimiter(), "delimitedTextDelimiter");
- setConfigurationValue(configuration.isFirstLineContainsHeaders(), "firstLineContainsHeaders");
- setConfigurationValue(configuration.getDocumentRoot(), "documentRoot");
- setConfigurationValue(configuration.getDataToExtract(), "dataToExtract");
- setConfigurationValue(configuration.getImageAction(), "imageAction");
- setConfigurationValue(configuration.isAllowSkillsetToReadFileData(), "allowSkillsetToReadFileData");
- setConfigurationValue(configuration.getPdfTextRotationAlgorithm(), "pdfTextRotationAlgorithm");
- setConfigurationValue(configuration.getExecutionEnvironment(), "executionEnvironment");
- setConfigurationValue(configuration.getQueryTimeout(), "queryTimeout");
- Map<String, Object> additionalProperties = configuration.getAdditionalProperties();
- if (!CoreUtils.isNullOrEmpty(additionalProperties)) {
- this.configuration.putAll(additionalProperties);
- }
- return this;
- }
- private void setConfigurationValue(Object value, String key) {
- if (value == null) {
- return;
- }
- if (configuration == null) {
- configuration = new HashMap<>();
- }
- configuration.put(key, String.valueOf(value));
- }
- }