SearchClient Classe
Un client per interagire con un indice di ricerca di Azure esistente.
- Ereditarietà
-
azure.search.documents._headers_mixin.HeadersMixinSearchClient
Costruttore
SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)
Parametri
- credential
- AzureKeyCredential oppure TokenCredential
Credenziali per autorizzare le richieste client di ricerca
- api_version
- str
Versione dell'API di ricerca da usare per le richieste.
- audience
- str
imposta Il gruppo di destinatari da usare per l'autenticazione con Azure Active Directory (AAD). Il gruppo di destinatari non viene considerato quando si usa una chiave condivisa. Se il pubblico non viene fornito, verrà assunto il pubblico del cloud.
Esempio
Creazione di SearchClient con una chiave 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))
Metodi
autocomplete |
Ottenere i risultati del completamento automatico della ricerca dall'indice di ricerca di Azure. raccolta che fa parte della definizione dell'indice. Modalità parola chiave: specifica la modalità di completamento automatico. Il valore predefinito è "oneTerm". Uso "twoTerms" per ottenere shingles e "oneTermWithContext" per usare il contesto corrente, generando termini completati automaticamente. I valori possibili includono: 'oneTerm', 'twoTerms', 'oneTermWithContext'. |
close |
Chiudere la SearchClient sessione. |
delete_documents |
Eliminare documenti dall'indice di ricerca di Azure Elimina rimuove il documento specificato dall'indice. Qualsiasi campo specificato in un'operazione di eliminazione, diverso dal campo chiave, verrà ignorato. Se si vuole rimuovere un singolo campo da un documento, usare merge_documents invece e impostare il campo in modo esplicito su Nessuno. Le operazioni di eliminazione sono idempotenti. In altre parole, anche se non esiste una chiave del documento nell'indice, il tentativo di eseguire un'operazione di eliminazione con quella chiave produrrà un codice di stato 200. |
get_document |
Recuperare un documento dall'indice di ricerca di Azure in base alla chiave. |
get_document_count |
Restituisce il numero di documenti nell'indice di ricerca di Azure. |
index_documents |
Specificare un'operazione del documento da eseguire come batch. :Genera RequestEntityTooLargeError |
merge_documents |
Unire i documenti in ai documenti esistenti nell'indice di ricerca di Azure. Aggiorna un documento esistente con i campi specificati. Se il documento non esiste, l'unione ha esito negativo. I campi specificati in un'azione di unione sostituiscono i campi esistenti nel documento. Questo vale anche per le raccolte di tipi primitivi e complessi. |
merge_or_upload_documents |
Unire i documenti nei documenti esistenti nell'indice di ricerca di Azure o caricarli se non esistono ancora. Questa azione si comporta come merge_documents se un documento con la chiave specificata esiste già nell'indice. Se il documento non esiste, si comporta come upload_documents con un nuovo documento. |
search |
Cercare l'indice di ricerca di Azure per i documenti. |
suggest |
Ottenere i risultati dei suggerimenti di ricerca dall'indice di ricerca di Azure. carattere e non più di 100 caratteri. :p aram str suggester_name: obbligatorio. Nome del suggeritore come specificato nell'insieme di suggeritori che fa parte della definizione dell'indice. Filtro str :keyword: espressione OData che filtra i documenti considerati per i suggerimenti. :keyword bool use_fuzzy_matching: valore che indica se usare la corrispondenza fuzzy per i suggerimenti . L'impostazione predefinita è false. Se impostato su true, la query troverà termini anche se nel testo di ricerca è presente un carattere sostituito o mancante. Anche se questo offre un'esperienza migliore in alcuni scenari, si tratta di un costo di prestazioni come le query di suggerimenti fuzzy sono più lente e utilizzano più risorse. |
upload_documents |
Caricare documenti nell'indice di ricerca di Azure. Un'azione di caricamento è simile a un "upsert" in cui il documento verrà inserito se è nuovo e aggiornato/sostituito se esiste. Tutti i campi vengono sostituiti nel caso di aggiornamento. |
autocomplete
Ottenere i risultati del completamento automatico della ricerca dall'indice di ricerca di Azure.
raccolta che fa parte della definizione dell'indice. Modalità parola chiave: specifica la modalità di completamento automatico. Il valore predefinito è "oneTerm". Uso
"twoTerms" per ottenere shingles e "oneTermWithContext" per usare il contesto corrente, generando termini completati automaticamente. I valori possibili includono: '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]
Parametri
- filter
- str
Espressione OData che filtra i documenti usati per produrre termini completati per il risultato completamento automatico.
- use_fuzzy_matching
- bool
Valore che indica se usare la corrispondenza fuzzy per la query di completamento automatico. L'impostazione predefinita è false. Se impostato su true, la query troverà termini anche se nel testo di ricerca è presente un carattere sostituito o mancante. Anche se questo offre un'esperienza migliore in alcuni scenari, si tratta di un costo di prestazioni come query di completamento automatico fuzzy sono più lente e utilizzano più risorse.
- highlight_post_tag
- str
Tag stringa accodato alle evidenziazioni di hit. Deve essere impostato con highlightPreTag. Se omesso, l'evidenziazione dei colpi è disabilitata.
- highlight_pre_tag
- str
Tag stringa prependato per l'evidenziazione. Deve essere impostato con highlightPostTag. Se omesso, l'evidenziazione dei colpi è disabilitata.
- minimum_coverage
- float
Numero compreso tra 0 e 100 che indica la percentuale dell'indice che deve essere coperta da una query di completamento automatico affinché la query venga segnalata come esito positivo. Questo parametro può essere utile per garantire la disponibilità di ricerca anche per i servizi con una sola replica. Il valore predefinito è 80.
Elenco di nomi di campi da considerare quando si esegue una query per i termini completati automaticamente. I campi di destinazione devono essere inclusi nel suggerimento specificato.
- top
- int
Numero di termini completati automaticamente da recuperare. Deve essere un valore compreso tra 1 e 100. Il valore predefinito è 5.
Tipo restituito
Esempio
Ottenere un completamento automatico.
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
Chiudere la SearchClient sessione.
close() -> None
delete_documents
Eliminare documenti dall'indice di ricerca di Azure
Elimina rimuove il documento specificato dall'indice. Qualsiasi campo specificato in un'operazione di eliminazione, diverso dal campo chiave, verrà ignorato. Se si vuole rimuovere un singolo campo da un documento, usare merge_documents invece e impostare il campo in modo esplicito su Nessuno.
Le operazioni di eliminazione sono idempotenti. In altre parole, anche se non esiste una chiave del documento nell'indice, il tentativo di eseguire un'operazione di eliminazione con quella chiave produrrà un codice di stato 200.
delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametri
Restituisce
Elenco di IndexingResult
Tipo restituito
Esempio
Eliminare documenti esistenti in un indice
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])
print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document
Recuperare un documento dall'indice di ricerca di Azure in base alla chiave.
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict
Parametri
Restituisce
Documento archiviato nell'indice di ricerca di Azure
Tipo restituito
Esempio
Ottenere un documento specifico dall'indice di ricerca.
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
Restituisce il numero di documenti nell'indice di ricerca di Azure.
get_document_count(**kwargs: Any) -> int
Restituisce
Numero di documenti nell'indice
Tipo restituito
index_documents
Specificare un'operazione del documento da eseguire come batch.
:Genera RequestEntityTooLargeError
index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]
Parametri
Restituisce
Elenco di IndexingResult
Tipo restituito
merge_documents
Unire i documenti in ai documenti esistenti nell'indice di ricerca di Azure.
Aggiorna un documento esistente con i campi specificati. Se il documento non esiste, l'unione ha esito negativo. I campi specificati in un'azione di unione sostituiscono i campi esistenti nel documento. Questo vale anche per le raccolte di tipi primitivi e complessi.
merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametri
Restituisce
Elenco di IndexingResult
Tipo restituito
Esempio
Unire i campi in documenti esistenti in un indice
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
Unire i documenti nei documenti esistenti nell'indice di ricerca di Azure o caricarli se non esistono ancora.
Questa azione si comporta come merge_documents se un documento con la chiave specificata esiste già nell'indice. Se il documento non esiste, si comporta come upload_documents con un nuovo documento.
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametri
Restituisce
Elenco di IndexingResult
Tipo restituito
search
Cercare l'indice di ricerca di Azure per i documenti.
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]
Parametri
- search_text
- str
Espressione di query di ricerca full-text; Usare "*" o omettere questo parametro per corrispondere a tutti i documenti.
- include_total_count
- bool
Valore che specifica se recuperare il conteggio totale dei risultati. L'impostazione predefinita è false. L'impostazione di questo valore su true potrebbe avere un impatto sulle prestazioni. Si noti che il conteggio restituito è un'approssimazione.
Elenco di espressioni facet da applicare alla query di ricerca. Ogni espressione facet contiene un nome di campo, facoltativamente seguito da un elenco delimitato da virgole di coppie name:value.
- filter
- str
Espressione OData $filter da applicare alla query di ricerca.
- highlight_fields
- str
Elenco delimitato da virgole di nomi di campi da usare per le evidenziazioni di hit. Solo i campi ricercabili possono essere usati per l'evidenziazione di hit.
- highlight_post_tag
- str
Tag stringa accodato alle evidenziazioni di hit. Deve essere impostato con highlightPreTag. Il valore predefinito è .
- highlight_pre_tag
- str
Tag stringa prependato per l'evidenziazione. Deve essere impostato con highlightPostTag. Il valore predefinito è .
- minimum_coverage
- float
Numero compreso tra 0 e 100 che indica la percentuale dell'indice che deve essere coperta da una query di ricerca per poter segnalare la query come esito positivo. Questo parametro può essere utile per garantire la disponibilità di ricerca anche per i servizi con una sola replica. Il valore predefinito è 100.
Elenco di espressioni di $orderby OData in base al quale ordinare i risultati. Ogni espressione può essere un nome di campo o una chiamata alle funzioni geo.distance() o search.score(). Ogni espressione può essere seguita da asc per indicare l'crescente e desc per indicare la desc decrescente. Per impostazione predefinita, l'ordinamento è crescente. Le situazioni di parità di priorità vengono risolte in base ai punteggi di corrispondenza dei documenti. Se non viene specificato orderBy, l'ordine di ordinamento predefinito è decrescente in base al punteggio di corrispondenza del documento. Possono essere presenti al massimo 32 clausole $orderby.
Valore che specifica la sintassi della query di ricerca. Il valore predefinito è "semplice". Usare "full" se la query usa la sintassi della query Lucene. I valori possibili includono: 'simple', 'full', "semantic".
Elenco dei valori dei parametri da usare nelle funzioni di assegnazione dei punteggi (ad esempio, referencePointParameter) usando i valori dei nomi di formato. Ad esempio, se il profilo di assegnazione dei punteggi definisce una funzione con un parametro denominato 'mylocation' la stringa di parametro sarebbe "mylocation-122.2.44.8" (senza virgolette).
- scoring_profile
- str
Nome di un profilo di punteggio da usare per la valutazione di punteggi di corrispondenza per i documenti corrispondenti, in modo da ordinare i risultati.
Elenco di nomi di campi a cui definire l'ambito della ricerca full-text. Quando si usa la ricerca in campi (fieldName:searchExpression) in una query Lucene completa, i nomi di campo di ogni espressione di ricerca a campi hanno la precedenza su tutti i nomi di campo elencati in questo parametro.
- search_mode
- str oppure SearchMode
Valore che specifica se qualsiasi o tutti i termini di ricerca devono essere corrispondenti per contare il documento come corrispondenza. I valori possibili includono: 'any', 'all'.
- query_answer
- str oppure QueryAnswerType
Questo parametro è valido solo se il tipo di query è "semantico". Se impostata, la query restituisce le risposte estratte dai passaggi chiave nei documenti classificati più alti. I valori possibili includono: "nessuno", "estratto".
- query_answer_count
- int
Questo parametro è valido solo se il tipo di query è 'semantico' e la risposta di query è 'estratto'. Configura il numero di risposte restituite. Il numero predefinito è 1.
- query_answer_threshold
- float
Questo parametro è valido solo se il tipo di query è 'semantico' e la risposta di query è 'estratto'. Configura il numero di soglia di attendibilità. Il conteggio predefinito è 0,7.
- query_caption
- str oppure QueryCaptionType
Questo parametro è valido solo se il tipo di query è "semantico". Se impostata, la query restituisce didascalie estratte dai passaggi chiave nei documenti classificati più alti. Il valore predefinito è "Nessuna". I valori possibili includono: "nessuno", "estratto".
- query_caption_highlight_enabled
- bool
Questo parametro è valido solo se il tipo di query è 'semantico' quando la query didascalia è impostata su 'estratto'. Determina se l'evidenziazione è abilitata. Il valore predefinito è "true".
- semantic_configuration_name
- str
Nome della configurazione semantica che verrà usata durante l'elaborazione dei documenti per le query di tipo semantica.
Elenco di campi da recuperare. Se non è specificato, vengono inclusi tutti i campi contrassegnati come recuperabili nello schema.
- skip
- int
Numero di risultati della ricerca da ignorare. Questo valore non può essere maggiore di 100.000. Se è necessario analizzare i documenti in sequenza, ma non è possibile usare $skip a causa di questa limitazione, è consigliabile usare $orderby su una chiave completamente ordinata e $filter con una query di intervallo.
- top
- int
Numero di risultati della ricerca da recuperare. Questa operazione può essere usata in combinazione con $skip per implementare il paging lato client dei risultati della ricerca. Se i risultati vengono troncati a causa del paging lato server, la risposta includerà un token di continuazione che può essere usato per inviare un'altra richiesta di ricerca per la pagina successiva dei risultati.
- scoring_statistics
- str oppure ScoringStatistics
Valore che specifica se si desidera calcolare le statistiche di assegnazione dei punteggi (ad esempio la frequenza del documento) a livello globale per un punteggio più coerente o locale, per una latenza inferiore. Il valore predefinito è "local". Usare "globale" per aggregare le statistiche di assegnazione dei punteggi a livello globale prima di assegnare punteggi. L'uso delle statistiche di assegnazione dei punteggi globali può aumentare la latenza delle query di ricerca. I valori possibili includono: "local", "global".
- session_id
- str
Valore da usare per creare una sessione sticky, che può aiutare a ottenere risultati più coerenti. Purché venga usato lo stesso sessionId, verrà eseguito un tentativo di sforzo ottimale per indirizzare lo stesso set di repliche. Tenere presente che il riutilizzo degli stessi valori sessionID può interferire ripetutamente con il bilanciamento del carico delle richieste tra repliche e influire negativamente sulle prestazioni del servizio di ricerca. Il valore usato come sessionId non può iniziare con un carattere '_'.
- semantic_error_mode
- str oppure SemanticErrorMode
Consente all'utente di scegliere se una chiamata semantica deve avere esito negativo completamente (comportamento predefinito/corrente) o restituire risultati parziali. I valori noti sono: "parziale" e "fail".
- semantic_max_wait_in_milliseconds
- int
Consente all'utente di impostare un limite superiore per la quantità di tempo necessario per l'arricchimento semantico per completare l'elaborazione prima che la richiesta non riesca.
- vector_queries
- list[VectorQuery]
Parametri di query per query di ricerca ibrida e vettore.
- vector_filter_mode
- str oppure VectorFilterMode
Determina se i filtri vengono applicati prima o dopo l'esecuzione della ricerca del vettore. Il valore predefinito è 'preFilter'. I valori noti sono: "postFilter" e "preFilter".
Tipo restituito
Esempio
Ottenere i facet dei risultati della ricerca.
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
Ottenere i risultati dei suggerimenti di ricerca dall'indice di ricerca di Azure.
carattere e non più di 100 caratteri. :p aram str suggester_name: obbligatorio. Nome del suggeritore come specificato nell'insieme di suggeritori che fa parte della definizione dell'indice. Filtro str :keyword: espressione OData che filtra i documenti considerati per i suggerimenti. :keyword bool use_fuzzy_matching: valore che indica se usare la corrispondenza fuzzy per i suggerimenti
. L'impostazione predefinita è false. Se impostato su true, la query troverà termini anche se nel testo di ricerca è presente un carattere sostituito o mancante. Anche se questo offre un'esperienza migliore in alcuni scenari, si tratta di un costo di prestazioni come le query di suggerimenti fuzzy sono più lente e utilizzano più risorse.
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]
Parametri
- highlight_post_tag
- str
Tag stringa accodato alle evidenziazioni di hit. Deve essere impostato con highlightPreTag. Se omesso, l'evidenziazione dei suggerimenti è disabilitata.
- highlight_pre_tag
- str
Tag stringa prependato per l'evidenziazione. Deve essere impostato con highlightPostTag. Se omesso, l'evidenziazione dei suggerimenti è disabilitata.
- minimum_coverage
- float
Numero compreso tra 0 e 100 che indica la percentuale dell'indice che deve essere coperta da una query di suggerimenti per poter segnalare la query come esito positivo. Questo parametro può essere utile per garantire la disponibilità di ricerca anche per i servizi con una sola replica. Il valore predefinito è 80.
Elenco di espressioni di $orderby OData in base al quale ordinare i risultati. Ogni espressione può essere un nome di campo o una chiamata alle funzioni geo.distance() o search.score(). Ogni espressione può essere seguita da asc per indicare l'crescente o il desc per indicare la decrescente. Per impostazione predefinita, l'ordinamento è crescente. Le situazioni di parità di priorità vengono risolte in base ai punteggi di corrispondenza dei documenti. Se non viene specificata alcuna $orderby, l'ordine di ordinamento predefinito è decrescente in base al punteggio di corrispondenza del documento. Possono essere presenti al massimo 32 clausole $orderby.
Elenco dei nomi dei campi da cercare il testo di ricerca specificato. I campi di destinazione devono essere inclusi nel suggerimento specificato.
Elenco di campi da recuperare. Se non specificato, solo il campo chiave verrà incluso nei risultati.
- top
- int
Numero di suggerimenti da recuperare. Il valore deve essere un numero compreso tra 1 e 100. Il valore predefinito è 5.
Restituisce
Elenco di documenti.
Tipo restituito
Esempio
Ottenere suggerimenti per la ricerca.
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
Caricare documenti nell'indice di ricerca di Azure.
Un'azione di caricamento è simile a un "upsert" in cui il documento verrà inserito se è nuovo e aggiornato/sostituito se esiste. Tutti i campi vengono sostituiti nel caso di aggiornamento.
upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametri
Restituisce
Elenco di IndexingResult
Tipo restituito
Esempio
Caricare nuovi documenti in un indice
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