SearchClient Classe
Um cliente para interagir com um índice de pesquisa do Azure existente.
- Herança
-
azure.search.documents._headers_mixin.HeadersMixinSearchClient
Construtor
SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)
Parâmetros
- credential
- AzureKeyCredential ou TokenCredential
Uma credencial para autorizar pedidos de cliente de pesquisa
- api_version
- str
A versão da API de Pesquisa a utilizar para pedidos.
- audience
- str
define a Audiência a utilizar para autenticação com o Azure Active Directory (AAD). A audiência não é considerada ao utilizar uma chave partilhada. Se a audiência não for fornecida, será assumida a audiência da cloud pública.
Exemplos
Criar o SearchClient com uma chave de API.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]
key = os.environ["AZURE_SEARCH_API_KEY"]
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
Métodos
autocomplete |
Obtenha resultados de conclusão automática da pesquisa a partir do índice de pesquisa do Azure. coleção que faz parte da definição de índice. :modo de palavra-chave: especifica o modo para Conclusão Automática. A predefinição é "oneTerm". Utilização "twoTerms" para obter telhas e "oneTermWithContext" para utilizar o contexto atual enquanto produz termos concluídos automaticamente. Os valores possíveis incluem: "oneTerm", "twoTerms", "oneTermWithContext". |
close |
Feche a SearchClient sessão. |
delete_documents |
Eliminar documentos do índice de pesquisa do Azure Eliminar remove o documento especificado do índice. Qualquer campo especificado numa operação de eliminação, que não seja o campo de chave, será ignorado. Se quiser remover um campo individual de um documento, utilize merge_documents e defina o campo explicitamente como Nenhum. As operações de eliminação são idempotentes. Ou seja, mesmo que não exista uma chave de documento no índice, tentar uma operação de eliminação com essa chave resultará num código de estado 200. |
get_document |
Obtenha um documento a partir do índice de pesquisa do Azure pela respetiva chave. |
get_document_count |
Devolver o número de documentos no índice de pesquisa do Azure. |
index_documents |
Especifique as operações de um documento a executar como um lote. :raises RequestEntityTooLargeError |
merge_documents |
Intercalar documentos em documentos existentes no índice de pesquisa do Azure. Intercalar atualiza um documento existente com os campos especificados. Se o documento não existir, a intercalação falhará. Qualquer campo que especifique numa intercalação irá substituir o campo existente no documento. Isto também se aplica a coleções de tipos primitivos e complexos. |
merge_or_upload_documents |
Intercale documentos em documentos existentes no índice de pesquisa do Azure ou carregue-os se ainda não existirem. Esta ação comporta-se como merge_documents se já existir um documento com a chave especificada no índice. Se o documento não existir, comporta-se como upload_documents com um novo documento. |
search |
Procure documentos no índice de pesquisa do Azure. |
suggest |
Obtenha resultados de sugestões de pesquisa a partir do índice de pesquisa do Azure. e não mais de 100 carateres. :p aram str suggester_name: Necessário. O nome do sugeridor, conforme especificado na coleção de sugestores que faz parte da definição do índice. :keyword str filter: uma expressão OData que filtra os documentos considerados para sugestões. :keyword bool use_fuzzy_matching: um valor que indica se deve utilizar a correspondência difusa para as sugestões consulta. A predefinição é falso. Quando definida como verdadeira, a consulta irá encontrar termos, mesmo que exista um caráter substituído ou em falta no texto de pesquisa. Embora isto proporcione uma melhor experiência em alguns cenários, tem um custo de desempenho, uma vez que as consultas de sugestões difusas são mais lentas e consomem mais recursos. |
upload_documents |
Carregue documentos para o índice de pesquisa do Azure. Uma ação de carregamento é semelhante a um "upsert" em que o documento será inserido se for novo e atualizado/substituído se existir. Todos os campos são substituídos no caso de atualização. |
autocomplete
Obtenha resultados de conclusão automática da pesquisa a partir do índice de pesquisa do Azure.
coleção que faz parte da definição de índice. :modo de palavra-chave: especifica o modo para Conclusão Automática. A predefinição é "oneTerm". Utilização
"twoTerms" para obter telhas e "oneTermWithContext" para utilizar o contexto atual enquanto produz termos concluídos automaticamente. Os valores possíveis incluem: "oneTerm", "twoTerms", "oneTermWithContext".
autocomplete(search_text: str, suggester_name: str, *, mode: str | AutocompleteMode | None = None, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, search_fields: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
Parâmetros
- filter
- str
Uma expressão OData que filtra os documentos utilizados para produzir termos concluídos para o resultado da Conclusão Automática.
- use_fuzzy_matching
- bool
Um valor que indica se deve utilizar a correspondência difusa para a consulta de conclusão automática. A predefinição é falso. Quando definida como verdadeira, a consulta irá encontrar termos, mesmo que exista um caráter substituído ou em falta no texto de pesquisa. Embora isto proporcione uma melhor experiência em alguns cenários, tem um custo de desempenho, uma vez que as consultas de conclusão automática difusas são mais lentas e consomem mais recursos.
- highlight_post_tag
- str
Uma etiqueta de cadeia de carateres que é anexada para obter destaques. Tem de ser definido com highlightPreTag. Se for omitido, o realce de acerto está desativado.
- highlight_pre_tag
- str
Uma etiqueta de cadeia de carateres que está pré-anexada para obter destaques. Tem de ser definido com highlightPostTag. Se for omitido, o realce de acerto está desativado.
- minimum_coverage
- float
Um número entre 0 e 100 que indica a percentagem do índice que tem de ser abrangido por uma consulta de conclusão automática para que a consulta seja comunicada com êxito. Este parâmetro pode ser útil para garantir a disponibilidade da pesquisa, mesmo para serviços com apenas uma réplica. A predefinição é 80.
A lista de nomes de campo a considerar ao consultar termos concluídos automaticamente. Os campos de destino têm de ser incluídos no sugeridor especificado.
- top
- int
O número de termos de conclusão automática a obter. Tem de ser um valor entre 1 e 100. A predefinição é 5.
Tipo de retorno
Exemplos
Obtenha as conclusões automáticas.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.autocomplete(search_text="bo", suggester_name="sg")
print("Autocomplete suggestions for 'bo'")
for result in results:
print(" Completion: {}".format(result["text"]))
close
Feche a SearchClient sessão.
close() -> None
delete_documents
Eliminar documentos do índice de pesquisa do Azure
Eliminar remove o documento especificado do índice. Qualquer campo especificado numa operação de eliminação, que não seja o campo de chave, será ignorado. Se quiser remover um campo individual de um documento, utilize merge_documents e defina o campo explicitamente como Nenhum.
As operações de eliminação são idempotentes. Ou seja, mesmo que não exista uma chave de documento no índice, tentar uma operação de eliminação com essa chave resultará num código de estado 200.
delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parâmetros
Devoluções
Lista de IndexaçãoResult
Tipo de retorno
Exemplos
Eliminar documentos existentes num índice
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])
print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document
Obtenha um documento a partir do índice de pesquisa do Azure pela respetiva chave.
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict
Parâmetros
Devoluções
O documento, conforme armazenado no índice de pesquisa do Azure
Tipo de retorno
Exemplos
Obtenha um documento específico a partir do índice de pesquisa.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
result = search_client.get_document(key="23")
print("Details for hotel '23' are:")
print(" Name: {}".format(result["hotelName"]))
print(" Rating: {}".format(result["rating"]))
print(" Category: {}".format(result["category"]))
get_document_count
Devolver o número de documentos no índice de pesquisa do Azure.
get_document_count(**kwargs: Any) -> int
Devoluções
A contagem de documentos no índice
Tipo de retorno
index_documents
Especifique as operações de um documento a executar como um lote.
:raises RequestEntityTooLargeError
index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]
Parâmetros
Devoluções
Lista de IndexaçãoResult
Tipo de retorno
merge_documents
Intercalar documentos em documentos existentes no índice de pesquisa do Azure.
Intercalar atualiza um documento existente com os campos especificados. Se o documento não existir, a intercalação falhará. Qualquer campo que especifique numa intercalação irá substituir o campo existente no documento. Isto também se aplica a coleções de tipos primitivos e complexos.
merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parâmetros
Devoluções
Lista de IndexaçãoResult
Tipo de retorno
Exemplos
Intercalar campos em documentos existentes num índice
result = search_client.merge_documents(documents=[{"hotelId": "1000", "rating": 4.5}])
print("Merge into new document succeeded: {}".format(result[0].succeeded))
merge_or_upload_documents
Intercale documentos em documentos existentes no índice de pesquisa do Azure ou carregue-os se ainda não existirem.
Esta ação comporta-se como merge_documents se já existir um documento com a chave especificada no índice. Se o documento não existir, comporta-se como upload_documents com um novo documento.
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parâmetros
Devoluções
Lista de IndexaçãoResult
Tipo de retorno
search
Procure documentos no índice de pesquisa do Azure.
search(search_text: str | None = None, *, include_total_count: bool | None = None, facets: List[str] | None = None, filter: str | None = None, highlight_fields: str | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, query_type: str | QueryType | None = None, scoring_parameters: List[str] | None = None, scoring_profile: str | None = None, search_fields: List[str] | None = None, search_mode: str | SearchMode | None = None, query_answer: str | QueryAnswerType | None = None, query_answer_count: int | None = None, query_answer_threshold: float | None = None, query_caption: str | QueryCaptionType | None = None, query_caption_highlight_enabled: bool | None = None, semantic_configuration_name: str | None = None, select: List[str] | None = None, skip: int | None = None, top: int | None = None, scoring_statistics: str | ScoringStatistics | None = None, session_id: str | None = None, vector_queries: List[VectorQuery] | None = None, vector_filter_mode: str | VectorFilterMode | None = None, semantic_error_mode: str | SemanticErrorMode | None = None, semantic_max_wait_in_milliseconds: int | None = None, **kwargs: Any) -> SearchItemPaged[Dict]
Parâmetros
- search_text
- str
Uma expressão de consulta de pesquisa em texto completo; Utilize "*" ou omita este parâmetro para corresponder a todos os documentos.
- include_total_count
- bool
Um valor que especifica se pretende obter a contagem total de resultados. A predefinição é falso. Definir este valor como verdadeiro pode ter um impacto no desempenho. Tenha em atenção que a contagem devolvida é uma aproximação.
A lista de expressões de facetas a aplicar à consulta de pesquisa. Cada expressão de faceta contém um nome de campo, opcionalmente seguido de uma lista separada por vírgulas de pares name:value.
- filter
- str
O OData $filter expressão a aplicar à consulta de pesquisa.
- highlight_fields
- str
A lista separada por vírgulas de nomes de campo a utilizar para os destaques de acesso. Apenas os campos pesquisáveis podem ser utilizados para o realce de resultados.
- highlight_post_tag
- str
Uma etiqueta de cadeia de carateres que é anexada para obter destaques. Tem de ser definido com highlightPreTag. A predefinição é .
- highlight_pre_tag
- str
Uma etiqueta de cadeia de carateres que está pré-anexada para obter destaques. Tem de ser definido com highlightPostTag. A predefinição é .
- minimum_coverage
- float
Um número entre 0 e 100 que indica a percentagem do índice que tem de ser abrangido por uma consulta de pesquisa para que a consulta seja reportada como um êxito. Este parâmetro pode ser útil para garantir a disponibilidade da pesquisa, mesmo para serviços com apenas uma réplica. A predefinição é 100.
A lista de OData $orderby expressões pelas quais ordenar os resultados. Cada expressão pode ser um nome de campo ou uma chamada para as funções geo.distance() ou search.score(). Cada expressão pode ser seguida por asc para indicar ascendente e desc para indicar descendente. A predefinição é ordem ascendente. Os empates serão quebrados pelas pontuações de correspondência de documentos. Se não for especificado orderBy, a sequência de ordenação predefinida é descendente por classificação de correspondência do documento. Pode haver, no máximo, 32 cláusulas de $orderby.
Um valor que especifica a sintaxe da consulta de pesquisa. A predefinição é "simples". Utilize "full" se a consulta utilizar a sintaxe de consulta Lucene. Os valores possíveis incluem: "simples", "completo", "semântico".
A lista de valores de parâmetros a utilizar nas funções de classificação (por exemplo, referencePointParameter) com o formato name-values. Por exemplo, se o perfil de classificação definir uma função com um parâmetro chamado "mylocation", a cadeia de parâmetros será "mylocation–122.2,44.8" (sem as aspas).
- scoring_profile
- str
O nome de um perfil de classificação para avaliar pontuações de correspondência para documentos correspondentes para ordenar os resultados.
A lista de nomes de campos para os quais pretende definir o âmbito da pesquisa em texto completo. Ao utilizar a pesquisa em campo (fieldName:searchExpression) numa consulta Lucene completa, os nomes de campo de cada expressão de pesquisa em campo têm precedência sobre quaisquer nomes de campo listados neste parâmetro.
- search_mode
- str ou SearchMode
Um valor que especifica se algum ou todos os termos de pesquisa têm de ser correspondidos para contar o documento como uma correspondência. Os valores possíveis incluem: "any", "all".
- query_answer
- str ou QueryAnswerType
Este parâmetro só é válido se o tipo de consulta for "semântico". Se estiver definida, a consulta devolve respostas extraídas das passagens principais nos documentos mais bem classificados. Os valores possíveis incluem: "none", "extractive".
- query_answer_count
- int
Este parâmetro só é válido se o tipo de consulta for "semântico" e a resposta da consulta for "extrativa". Configura o número de respostas devolvidas. A contagem predefinida é 1.
- query_answer_threshold
- float
Este parâmetro só é válido se o tipo de consulta for "semântico" e a resposta da consulta for "extrativa". Configura o número de limiares de confiança. A contagem predefinida é 0,7.
- query_caption
- str ou QueryCaptionType
Este parâmetro só é válido se o tipo de consulta for "semântico". Se estiver definida, a consulta devolve legendas extraídas de passagens-chave nos documentos mais bem classificados. A predefinição é "Nenhum". Os valores possíveis incluem: "none", "extractive".
- query_caption_highlight_enabled
- bool
Este parâmetro só é válido se o tipo de consulta for "semântico" quando a consulta legenda estiver definida como "extrativa". Determina se o realce está ativado. A predefinição é "true".
- semantic_configuration_name
- str
O nome da configuração semântica que será utilizada ao processar documentos para consultas do tipo semântico.
A lista de campos a obter. Se não for especificado, todos os campos marcados como recuperáveis no esquema são incluídos.
- skip
- int
O número de resultados da pesquisa a ignorar. Este valor não pode ser superior a 100 000. Se precisar de analisar documentos em sequência, mas não puder utilizar $skip devido a esta limitação, considere utilizar $orderby numa chave totalmente ordenada e, em vez disso, $filter com uma consulta de intervalo.
- top
- int
O número de resultados da pesquisa a obter. Isto pode ser utilizado em conjunto com $skip para implementar a paginação do lado do cliente dos resultados da pesquisa. Se os resultados forem truncados devido à paginação do lado do servidor, a resposta incluirá um token de continuação que pode ser utilizado para emitir outro pedido de Pesquisa para a próxima página de resultados.
- scoring_statistics
- str ou ScoringStatistics
Um valor que especifica se queremos calcular as estatísticas de classificação (como a frequência do documento) globalmente para uma classificação mais consistente, ou localmente, para uma menor latência. A predefinição é "local". Utilize "global" para agregar estatísticas de classificação globalmente antes de classificar. A utilização de estatísticas de classificação globais pode aumentar a latência das consultas de pesquisa. Os valores possíveis incluem: "local", "global".
- session_id
- str
Um valor a ser utilizado para criar uma sessão autocolante, o que pode ajudar a obter resultados mais consistentes. Desde que o mesmo sessionId seja utilizado, será efetuada uma tentativa de melhor esforço para direcionar o mesmo conjunto de réplicas. Tenha em atenção que reutilizar repetidamente os mesmos valores sessionID pode interferir com o balanceamento de carga dos pedidos entre réplicas e afetar negativamente o desempenho do serviço de pesquisa. O valor utilizado como sessionId não pode começar com um caráter "_".
- semantic_error_mode
- str ou SemanticErrorMode
Permite ao utilizador escolher se uma chamada semântica deve falhar completamente (comportamento predefinido/atual) ou devolver resultados parciais. Os valores conhecidos são: "parcial" e "falha".
- semantic_max_wait_in_milliseconds
- int
Permite que o utilizador defina um limite superior sobre a quantidade de tempo que o melhoramento semântico demora a concluir o processamento antes de o pedido falhar.
- vector_queries
- list[VectorQuery]
Os parâmetros de consulta para consultas de vetor e pesquisa híbrida.
- vector_filter_mode
- str ou VectorFilterMode
Determina se os filtros são aplicados antes ou depois de a pesquisa de vetor ser executada. A predefinição é "preFilter". Os valores conhecidos são: "postFilter" e "preFilter".
Tipo de retorno
Exemplos
Obter facetas de resultados da pesquisa.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.search(search_text="WiFi", facets=["category,count:3", "parkingIncluded"])
facets: Dict[str, List[str]] = cast(Dict[str, List[str]], results.get_facets())
print("Catgory facet counts for hotels:")
for facet in facets["category"]:
print(" {}".format(facet))
suggest
Obtenha resultados de sugestões de pesquisa a partir do índice de pesquisa do Azure.
e não mais de 100 carateres. :p aram str suggester_name: Necessário. O nome do sugeridor, conforme especificado na coleção de sugestores que faz parte da definição do índice. :keyword str filter: uma expressão OData que filtra os documentos considerados para sugestões. :keyword bool use_fuzzy_matching: um valor que indica se deve utilizar a correspondência difusa para as sugestões
consulta. A predefinição é falso. Quando definida como verdadeira, a consulta irá encontrar termos, mesmo que exista um caráter substituído ou em falta no texto de pesquisa. Embora isto proporcione uma melhor experiência em alguns cenários, tem um custo de desempenho, uma vez que as consultas de sugestões difusas são mais lentas e consomem mais recursos.
suggest(search_text: str, suggester_name: str, *, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, search_fields: List[str] | None = None, select: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
Parâmetros
- highlight_post_tag
- str
Uma etiqueta de cadeia de carateres que é anexada para obter destaques. Tem de ser definido com highlightPreTag. Se for omitido, prima o realce das sugestões desativado.
- highlight_pre_tag
- str
Uma etiqueta de cadeia de carateres que está pré-anexada para obter destaques. Tem de ser definido com highlightPostTag. Se for omitido, prima o realce das sugestões desativado.
- minimum_coverage
- float
Um número entre 0 e 100 que indica a percentagem do índice que tem de ser abrangido por uma consulta de sugestões para que a consulta seja comunicada com êxito. Este parâmetro pode ser útil para garantir a disponibilidade da pesquisa, mesmo para serviços com apenas uma réplica. A predefinição é 80.
A lista de OData $orderby expressões pelas quais ordenar os resultados. Cada expressão pode ser um nome de campo ou uma chamada para as funções geo.distance() ou search.score(). Cada expressão pode ser seguida por asc para indicar ascendente ou desc para indicar descendente. A predefinição é ordem ascendente. Os empates serão quebrados pelas pontuações de correspondência de documentos. Se não for especificada nenhuma $orderby, a sequência de ordenação predefinida é descendente por classificação de correspondência do documento. Pode haver, no máximo, 32 cláusulas de $orderby.
A lista de nomes de campos a procurar o texto de pesquisa especificado. Os campos de destino têm de ser incluídos no sugeridor especificado.
A lista de campos a obter. Se não for especificado, apenas o campo de chave será incluído nos resultados.
- top
- int
O número de sugestões a obter. O valor tem de ser um número entre 1 e 100. A predefinição é 5.
Devoluções
Lista de documentos.
Tipo de retorno
Exemplos
Obter sugestões de pesquisa.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.suggest(search_text="coffee", suggester_name="sg")
print("Search suggestions for 'coffee'")
for result in results:
hotel = search_client.get_document(key=result["hotelId"])
print(" Text: {} for Hotel: {}".format(repr(result["text"]), hotel["hotelName"]))
upload_documents
Carregue documentos para o índice de pesquisa do Azure.
Uma ação de carregamento é semelhante a um "upsert" em que o documento será inserido se for novo e atualizado/substituído se existir. Todos os campos são substituídos no caso de atualização.
upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parâmetros
Devoluções
Lista de IndexaçãoResult
Tipo de retorno
Exemplos
Carregar novos documentos para um índice
DOCUMENT = {
"category": "Hotel",
"hotelId": "1000",
"rating": 4.0,
"rooms": [],
"hotelName": "Azure Inn",
}
result = search_client.upload_documents(documents=[DOCUMENT])
print("Upload of new document succeeded: {}".format(result[0].succeeded))
Azure SDK for Python