@azure/search-documents
Version:
Azure client library to use AI Search for node.js and browser.
456 lines • 20.8 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
import { errorResponseDeserializer, searchDocumentsResultDeserializer, vectorQueryUnionArraySerializer, lookupDocumentDeserializer, suggestDocumentsResultDeserializer, indexDocumentsBatchSerializer, indexDocumentsResultDeserializer, autocompleteResultDeserializer, } from "../../models/azure/search/documents/models.js";
import { buildCsvCollection } from "../../static-helpers/serialization/build-csv-collection.js";
import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js";
import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client";
export function _autocompletePostSend(context, searchText, suggesterName, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.post.autocomplete{?api%2Dversion}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).post({
...operationOptionsToRequestParameters(options),
contentType: "application/json",
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
body: {
search: searchText,
autocompleteMode: options?.autocompleteMode,
filter: options?.filter,
fuzzy: options?.useFuzzyMatching,
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
searchFields: !options?.searchFields
? options?.searchFields
: buildCsvCollection(options?.searchFields.map((p) => {
return p;
})),
suggesterName: suggesterName,
top: options?.top,
},
});
}
export async function _autocompletePostDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return autocompleteResultDeserializer(result.body);
}
/** Autocompletes incomplete query terms based on input text and matching terms in the index. */
export async function autocompletePost(context, searchText, suggesterName, options = { requestOptions: {} }) {
const result = await _autocompletePostSend(context, searchText, suggesterName, options);
return _autocompletePostDeserialize(result);
}
export function _autocompleteGetSend(context, searchText, suggesterName, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.autocomplete{?api%2Dversion,search,suggesterName,autocompleteMode,%24filter,fuzzy,highlightPostTag,highlightPreTag,minimumCoverage,searchFields,%24top}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
search: searchText,
suggesterName: suggesterName,
autocompleteMode: options?.autocompleteMode,
"%24filter": options?.filter,
fuzzy: options?.useFuzzyMatching,
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
searchFields: !options?.searchFields
? options?.searchFields
: options?.searchFields.map((p) => {
return p;
}),
"%24top": options?.top,
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).get({
...operationOptionsToRequestParameters(options),
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
});
}
export async function _autocompleteGetDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return autocompleteResultDeserializer(result.body);
}
/** Autocompletes incomplete query terms based on input text and matching terms in the index. */
export async function autocompleteGet(context, searchText, suggesterName, options = { requestOptions: {} }) {
const result = await _autocompleteGetSend(context, searchText, suggesterName, options);
return _autocompleteGetDeserialize(result);
}
export function _indexSend(context, batch, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.index{?api%2Dversion}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).post({
...operationOptionsToRequestParameters(options),
contentType: "application/json",
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
body: indexDocumentsBatchSerializer(batch),
});
}
export async function _indexDeserialize(result) {
const expectedStatuses = ["200", "207"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return indexDocumentsResultDeserializer(result.body);
}
/** Sends a batch of document write actions to the index. */
export async function index(context, batch, options = { requestOptions: {} }) {
const result = await _indexSend(context, batch, options);
return _indexDeserialize(result);
}
export function _suggestPostSend(context, searchText, suggesterName, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.post.suggest{?api%2Dversion}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).post({
...operationOptionsToRequestParameters(options),
contentType: "application/json",
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
body: {
filter: options?.filter,
fuzzy: options?.useFuzzyMatching,
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
orderby: options?.orderBy,
search: searchText,
searchFields: options?.searchFields,
select: options?.select,
suggesterName: suggesterName,
top: options?.top,
},
});
}
export async function _suggestPostDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return suggestDocumentsResultDeserializer(result.body);
}
/** Suggests documents in the index that match the given partial query text. */
export async function suggestPost(context, searchText, suggesterName, options = { requestOptions: {} }) {
const result = await _suggestPostSend(context, searchText, suggesterName, options);
return _suggestPostDeserialize(result);
}
export function _suggestGetSend(context, searchText, suggesterName, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.suggest{?api%2Dversion,search,suggesterName,%24filter,fuzzy,highlightPostTag,highlightPreTag,minimumCoverage,%24orderby,searchFields,%24select,%24top}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
search: searchText,
suggesterName: suggesterName,
"%24filter": options?.filter,
fuzzy: options?.useFuzzyMatching,
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
"%24orderby": options?.orderBy,
searchFields: options?.searchFields,
"%24select": options?.select,
"%24top": options?.top,
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).get({
...operationOptionsToRequestParameters(options),
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
});
}
export async function _suggestGetDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return suggestDocumentsResultDeserializer(result.body);
}
/** Suggests documents in the index that match the given partial query text. */
export async function suggestGet(context, searchText, suggesterName, options = { requestOptions: {} }) {
const result = await _suggestGetSend(context, searchText, suggesterName, options);
return _suggestGetDeserialize(result);
}
export function _getDocumentSend(context, key, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs('{key}'){?api%2Dversion,%24select}", {
key: key,
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
"%24select": options?.selectedFields,
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).get({
...operationOptionsToRequestParameters(options),
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
});
}
export async function _getDocumentDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return lookupDocumentDeserializer(result.body);
}
/** Retrieves a document from the index. */
export async function getDocument(context, key, options = { requestOptions: {} }) {
const result = await _getDocumentSend(context, key, options);
return _getDocumentDeserialize(result);
}
export function _searchPostSend(context, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/search.post.search{?api%2Dversion}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).post({
...operationOptionsToRequestParameters(options),
contentType: "application/json",
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
body: {
count: options?.includeTotalCount,
facets: !options?.facets
? options?.facets
: options?.facets.map((p) => {
return p;
}),
filter: options?.filter,
highlight: !options?.highlightFields
? options?.highlightFields
: buildCsvCollection(options?.highlightFields.map((p) => {
return p;
})),
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
orderby: options?.orderBy,
queryType: options?.queryType,
scoringStatistics: options?.scoringStatistics,
sessionId: options?.sessionId,
scoringParameters: !options?.scoringParameters
? options?.scoringParameters
: options?.scoringParameters.map((p) => {
return p;
}),
scoringProfile: options?.scoringProfile,
debug: options?.debug,
search: options?.searchText,
searchFields: options?.searchFields,
searchMode: options?.searchMode,
select: options?.select,
skip: options?.skip,
top: options?.top,
semanticConfiguration: options?.semanticConfigurationName,
semanticErrorHandling: options?.semanticErrorHandling,
semanticMaxWaitInMilliseconds: options?.semanticMaxWaitInMilliseconds,
semanticQuery: options?.semanticQuery,
answers: options?.answers,
captions: options?.captions,
vectorQueries: !options?.vectorQueries
? options?.vectorQueries
: vectorQueryUnionArraySerializer(options?.vectorQueries),
vectorFilterMode: options?.vectorFilterMode,
},
});
}
export async function _searchPostDeserialize(result) {
const expectedStatuses = ["200", "206"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return searchDocumentsResultDeserializer(result.body);
}
/** Searches for documents in the index. */
export async function searchPost(context, options = { requestOptions: {} }) {
const result = await _searchPostSend(context, options);
return _searchPostDeserialize(result);
}
export function _searchGetSend(context, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs{?api%2Dversion,search,%24count,facet*,%24filter,highlight,highlightPostTag,highlightPreTag,minimumCoverage,%24orderby,queryType,scoringParameter*,scoringProfile,searchFields,searchMode,scoringStatistics,sessionId,%24select,%24skip,%24top,semanticConfiguration,semanticErrorHandling,semanticMaxWaitInMilliseconds,answers,captions,semanticQuery,debug}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
search: options?.searchText,
"%24count": options?.includeTotalResultCount,
facet: !options?.facets
? options?.facets
: options?.facets.map((p) => {
return p;
}),
"%24filter": options?.filter,
highlight: !options?.highlightFields
? options?.highlightFields
: options?.highlightFields.map((p) => {
return p;
}),
highlightPostTag: options?.highlightPostTag,
highlightPreTag: options?.highlightPreTag,
minimumCoverage: options?.minimumCoverage,
"%24orderby": options?.orderBy,
queryType: options?.queryType,
scoringParameter: !options?.scoringParameters
? options?.scoringParameters
: options?.scoringParameters.map((p) => {
return p;
}),
scoringProfile: options?.scoringProfile,
searchFields: options?.searchFields,
searchMode: options?.searchMode,
scoringStatistics: options?.scoringStatistics,
sessionId: options?.sessionId,
"%24select": options?.select,
"%24skip": options?.skip,
"%24top": options?.top,
semanticConfiguration: options?.semanticConfiguration,
semanticErrorHandling: options?.semanticErrorHandling,
semanticMaxWaitInMilliseconds: options?.semanticMaxWaitInMilliseconds,
answers: options?.answers,
captions: options?.captions,
semanticQuery: options?.semanticQuery,
debug: options?.debug,
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).get({
...operationOptionsToRequestParameters(options),
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
});
}
export async function _searchGetDeserialize(result) {
const expectedStatuses = ["200", "206"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return searchDocumentsResultDeserializer(result.body);
}
/** Searches for documents in the index. */
export async function searchGet(context, options = { requestOptions: {} }) {
const result = await _searchGetSend(context, options);
return _searchGetDeserialize(result);
}
export function _getDocumentCountSend(context, options = { requestOptions: {} }) {
const path = expandUrlTemplate("/indexes('{indexName}')/docs/$count{?api%2Dversion}", {
indexName: context.indexName,
"api%2Dversion": context.apiVersion ?? "2026-04-01",
}, {
allowReserved: options?.requestOptions?.skipUrlEncoding,
});
return context.path(path).get({
...operationOptionsToRequestParameters(options),
headers: {
...(options?.accept !== undefined
? { accept: !options?.accept ? options?.accept : "application/json;odata.metadata=none" }
: {}),
...(options?.clientRequestId !== undefined
? { "x-ms-client-request-id": options?.clientRequestId }
: {}),
...options.requestOptions?.headers,
},
});
}
export async function _getDocumentCountDeserialize(result) {
const expectedStatuses = ["200"];
if (!expectedStatuses.includes(result.status)) {
const error = createRestError(result);
error.details = errorResponseDeserializer(result.body);
throw error;
}
return result.body;
}
/** Queries the number of documents in the index. */
export async function getDocumentCount(context, options = { requestOptions: {} }) {
const result = await _getDocumentCountSend(context, options);
return _getDocumentCountDeserialize(result);
}
//# sourceMappingURL=operations.js.map