SearchClient Třída
Klient pro interakci s existujícím indexem služby Azure Search.
- Dědičnost
-
azure.search.documents._headers_mixin.HeadersMixinSearchClient
Konstruktor
SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)
Parametry
- credential
- AzureKeyCredential nebo TokenCredential
Přihlašovací údaje pro autorizaci žádostí klientů vyhledávání
- api_version
- str
Verze rozhraní API pro vyhledávání, která se má použít pro požadavky.
- audience
- str
nastaví cílovou skupinu pro ověřování pomocí Azure Active Directory (AAD). Při použití sdíleného klíče se nezohlední cílová skupina. Pokud cílová skupina není k dispozici, předpokládá se cílová skupina veřejného cloudu.
Příklady
Vytvoření SearchClient s klíčem rozhraní 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))
Metody
autocomplete |
Získejte výsledky automatického dokončování hledání z indexu služby Azure Search. kolekce, která je součástí definice indexu. :keyword mode: Určuje režim automatického dokončování. Výchozí hodnota je "oneTerm". Použití TwoTerms pro získání šindelů a "oneTermWithContext" pro použití aktuálního kontextu při vytváření automaticky dokončených termínů. Mezi možné hodnoty patří: "oneTerm", "twoTerms", "oneTermWithContext". |
close |
Zavřete SearchClient relaci. |
delete_documents |
Odstranění dokumentů z indexu Služby Azure Search Odstranění odebere zadaný dokument z indexu. Jakékoli pole, které zadáte v operaci odstranění, kromě pole s klíčem, bude ignorováno. Pokud chcete z dokumentu odebrat jednotlivá pole, použijte místo toho merge_documents a nastavte pole explicitně na Žádné. Operace odstranění jsou idempotentní. To znamená, že i když klíč dokumentu v indexu neexistuje, výsledkem pokusu o operaci odstranění s tímto klíčem bude stavový kód 200. |
get_document |
Načtěte dokument z indexu Azure Search podle jeho klíče. |
get_document_count |
Vrátí počet dokumentů v indexu Služby Azure Search. |
index_documents |
Zadejte operace s dokumentem, které se mají provést jako dávka. :Vyvolává RequestEntityTooLargeError |
merge_documents |
Sloučit dokumenty do existující dokumenty v indexu Služby Azure Search. Sloučení aktualizuje existující dokument pomocí zadaných polí. Pokud dokument neexistuje, sloučení se nezdaří. Každé pole zadané ve sloučení nahradí stávající pole v dokumentu. To platí i pro kolekce primitivních a složitých typů. |
merge_or_upload_documents |
Sloučit dokumenty do existujících dokumentů v indexu Azure Search nebo je nahrát, pokud ještě neexistují. Tato akce se chová jako merge_documents , pokud už v indexu existuje dokument s daným klíčem. Pokud dokument neexistuje, chová se jako upload_documents s novým dokumentem. |
search |
Vyhledejte dokumenty ve vyhledávacím indexu Azure. |
suggest |
Získejte výsledky návrhů hledání z indexu služby Azure Search. a maximálně 100 znaků. :p aram str suggester_name: Povinné. Název návrhu zadaný v kolekci návrhy, která je součástí definice indexu. :keyword str filter: Výraz OData, který filtruje dokumenty uvažované pro návrhy. :keyword bool use_fuzzy_matching: Hodnota označující, jestli se má pro návrhy použít přibližné párování Dotazu. Výchozí hodnota je false. Pokud je nastavená hodnota true, dotaz vyhledá termíny, i když je ve hledaném textu nahrazený nebo chybí znak. I když to v některých scénářích poskytuje lepší prostředí, má to náklady na výkon, protože dotazy na přibližné návrhy jsou pomalejší a spotřebovávají více prostředků. |
upload_documents |
Nahrajte dokumenty do indexu Azure Search. Akce nahrání se podobá akci upsert, do které se dokument vloží, pokud je nový, a pokud existuje, aktualizuje nebo nahradí. Všechna pole jsou v případě aktualizace nahrazena. |
autocomplete
Získejte výsledky automatického dokončování hledání z indexu služby Azure Search.
kolekce, která je součástí definice indexu. :keyword mode: Určuje režim automatického dokončování. Výchozí hodnota je "oneTerm". Použití
TwoTerms pro získání šindelů a "oneTermWithContext" pro použití aktuálního kontextu při vytváření automaticky dokončených termínů. Mezi možné hodnoty patří: "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]
Parametry
- filter
- str
Výraz OData, který filtruje dokumenty použité k vytvoření dokončených termínů pro výsledek automatického dokončování.
- use_fuzzy_matching
- bool
Hodnota označující, jestli se má pro dotaz automatického dokončování použít přibližné párování. Výchozí hodnota je false. Pokud je nastavená hodnota true, dotaz vyhledá termíny, i když je ve hledaném textu nahrazený nebo chybí znak. I když to v některých scénářích poskytuje lepší prostředí, má to náklady na výkon, protože dotazy s přibližným automatickým dokončováním jsou pomalejší a spotřebovávají více prostředků.
- highlight_post_tag
- str
Značka řetězce, která je připojena k dosažení zvýraznění. Musí být nastaven pomocí highlightPreTag. Pokud je vynechán, zvýraznění kláves je zakázané.
- highlight_pre_tag
- str
Značka řetězce, která je předem připravená k dosažení zvýraznění. Musí být nastaven pomocí highlightPostTag. Pokud je vynechán, zvýraznění kláves je zakázané.
- minimum_coverage
- float
Číslo mezi 0 a 100 označující procento indexu, které musí být pokryto dotazem automatického dokončování, aby byl dotaz nahlášen jako úspěšný. Tento parametr může být užitečný pro zajištění dostupnosti vyhledávání i pro služby, které mají jenom jednu repliku. Výchozí hodnota je 80.
Seznam názvů polí, které je potřeba vzít v úvahu při dotazování na automaticky dokončené termíny. Cílová pole musí být zahrnuta v zadaném návrhu.
- top
- int
Počet automaticky dokončených termínů, které se mají načíst. Musí se jednat o hodnotu mezi 1 a 100. Výchozí hodnota je 5.
Návratový typ
Příklady
Získejte automatické dokončování.
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
Zavřete SearchClient relaci.
close() -> None
delete_documents
Odstranění dokumentů z indexu Služby Azure Search
Odstranění odebere zadaný dokument z indexu. Jakékoli pole, které zadáte v operaci odstranění, kromě pole s klíčem, bude ignorováno. Pokud chcete z dokumentu odebrat jednotlivá pole, použijte místo toho merge_documents a nastavte pole explicitně na Žádné.
Operace odstranění jsou idempotentní. To znamená, že i když klíč dokumentu v indexu neexistuje, výsledkem pokusu o operaci odstranění s tímto klíčem bude stavový kód 200.
delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametry
Návraty
Seznam indexováníResult
Návratový typ
Příklady
Odstranění existujících dokumentů do indexu
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])
print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document
Načtěte dokument z indexu Azure Search podle jeho klíče.
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict
Parametry
Návraty
Dokument uložený v indexu Služby Azure Search
Návratový typ
Příklady
Získejte konkrétní dokument z indexu vyhledávání.
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
Vrátí počet dokumentů v indexu Služby Azure Search.
get_document_count(**kwargs: Any) -> int
Návraty
Počet dokumentů v indexu
Návratový typ
index_documents
Zadejte operace s dokumentem, které se mají provést jako dávka.
:Vyvolává RequestEntityTooLargeError
index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]
Parametry
Návraty
Seznam indexováníResult
Návratový typ
merge_documents
Sloučit dokumenty do existující dokumenty v indexu Služby Azure Search.
Sloučení aktualizuje existující dokument pomocí zadaných polí. Pokud dokument neexistuje, sloučení se nezdaří. Každé pole zadané ve sloučení nahradí stávající pole v dokumentu. To platí i pro kolekce primitivních a složitých typů.
merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametry
Návraty
Seznam indexováníResult
Návratový typ
Příklady
Sloučení polí do existujících dokumentů do indexu
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
Sloučit dokumenty do existujících dokumentů v indexu Azure Search nebo je nahrát, pokud ještě neexistují.
Tato akce se chová jako merge_documents , pokud už v indexu existuje dokument s daným klíčem. Pokud dokument neexistuje, chová se jako upload_documents s novým dokumentem.
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametry
Návraty
Seznam indexováníResult
Návratový typ
search
Vyhledejte dokumenty ve vyhledávacím indexu 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]
Parametry
- search_text
- str
Výraz fulltextového vyhledávacího dotazu; Pokud chcete spárovat všechny dokumenty, použijte "*" nebo tento parametr vyněžte.
- include_total_count
- bool
Hodnota, která určuje, zda se má načíst celkový počet výsledků. Výchozí hodnota je false. Nastavení této hodnoty na true může mít vliv na výkon. Všimněte si, že vrácený počet je přibližný.
Seznam výrazů omezujících vlastností, které se mají použít u vyhledávacího dotazu. Každý výraz omezující vlastnosti obsahuje název pole, za kterým volitelně následuje čárkami oddělený seznam párů název:hodnota.
- filter
- str
OData $filter výraz, který se má použít u vyhledávacího dotazu.
- highlight_fields
- str
Seznam názvů polí oddělených čárkami, který se má použít pro zvýraznění přístupů. Ke zvýraznění přístupů je možné použít pouze prohledávatelná pole.
- highlight_post_tag
- str
Značka řetězce, která je připojena k dosažení zvýraznění. Musí být nastaven pomocí highlightPreTag. Výchozí je .
- highlight_pre_tag
- str
Značka řetězce, která je předem připravená k dosažení zvýraznění. Musí být nastaven pomocí highlightPostTag. Výchozí je .
- minimum_coverage
- float
Číslo mezi 0 a 100 označující procento indexu, které musí být pokryto vyhledávacím dotazem, aby byl dotaz nahlášen jako úspěšný. Tento parametr může být užitečný pro zajištění dostupnosti vyhledávání i pro služby, které mají jenom jednu repliku. Výchozí hodnota je 100.
Seznam OData $orderby výrazy, podle kterých se mají výsledky seřadit. Každý výraz může být buď názvem pole, nebo voláním funkcí geo.distance() nebo search.score(). Za každým výrazem může následovat asc, který označuje vzestupně, a desc pro označení sestupného. Výchozí hodnota je vzestupné pořadí. Vazby budou přerušeny skóre shody dokumentů. Pokud není zadán žádný OrderBy, výchozí pořadí řazení je sestupné podle skóre shody dokumentu. Může existovat maximálně 32 $orderby klauzulí.
Hodnota, která určuje syntaxi vyhledávacího dotazu. Výchozí hodnota je "jednoduchá". Pokud dotaz používá syntaxi dotazu Lucene, použijte "full". Mezi možné hodnoty patří: 'simple', 'full', "sémantic".
Seznam hodnot parametrů, které se mají použít v bodovacích funkcích (například referencePointParameter) s použitím formátu name-values. Pokud například bodovací profil definuje funkci s parametrem s názvem mylocation, řetězec parametru bude "mylocation–122.2;44.8" (bez uvozovek).
- scoring_profile
- str
Název profilu bodování, který má vyhodnotit skóre shody pro odpovídající dokumenty, aby bylo možné výsledky seřadit.
Seznam názvů polí, na které se má nastavit rozsah fulltextového vyhledávání. Při použití hledání v polích (fieldName:searchExpression) v úplném dotazu Lucene mají názvy polí jednotlivých výrazů hledání v polích přednost před názvy polí uvedených v tomto parametru.
- search_mode
- str nebo SearchMode
Hodnota, která určuje, jestli se musí některé nebo všechny hledané termíny shodovat, aby bylo možné dokument spočítat jako shodu. Mezi možné hodnoty patří: "any", "all".
- query_answer
- str nebo QueryAnswerType
Tento parametr je platný pouze v případě, že je typ dotazu sémantický. Pokud je tato možnost nastavená, dotaz vrátí odpovědi extrahované z klíčových pasáží v nejvýše hodnocených dokumentech. Mezi možné hodnoty patří: "none", "extractive".
- query_answer_count
- int
Tento parametr je platný pouze v případě, že je typ dotazu "sémantický" a odpověď na dotaz je "extractive". Konfiguruje počet vrácených odpovědí. Výchozí počet je 1.
- query_answer_threshold
- float
Tento parametr je platný pouze v případě, že je typ dotazu "sémantický" a odpověď na dotaz je "extractive". Konfiguruje počet prahových hodnot spolehlivosti. Výchozí počet je 0,7.
- query_caption
- str nebo QueryCaptionType
Tento parametr je platný pouze v případě, že je typ dotazu sémantický. Pokud je tato možnost nastavená, dotaz vrátí titulky extrahované z klíčových pasáží v dokumentech s nejvyšším pořadím. Výchozí hodnota je Žádná. Mezi možné hodnoty patří: "none", "extractive".
- query_caption_highlight_enabled
- bool
Tento parametr je platný pouze v případě, že je typ dotazu "sémantický", pokud je popis dotazu nastaven na "extractive". Určuje, jestli je povolené zvýrazňování. Výchozí hodnota je true.
- semantic_configuration_name
- str
Název sémantické konfigurace, která se použije při zpracování dokumentů pro sémantické dotazy typu.
Seznam polí, která se mají načíst. Pokud není zadáno, budou zahrnuta všechna pole označená jako načístelná ve schématu.
- skip
- int
Počet výsledků hledání, které se mají přeskočit. Tato hodnota nesmí být větší než 100 000. Pokud potřebujete skenovat dokumenty v posloupnosti, ale nemůžete kvůli tomuto omezení použít $skip, zvažte použití $orderby u zcela seřazeného klíče a $filter s dotazem na rozsah.
- top
- int
Počet výsledků hledání, které se mají načíst. To se dá použít ve spojení s $skip k implementaci stránkování výsledků hledání na straně klienta. Pokud jsou výsledky zkráceny kvůli stránkování na straně serveru, odpověď bude obsahovat pokračovací token, který lze použít k vydání dalšího požadavku hledání na další stránku výsledků.
- scoring_statistics
- str nebo ScoringStatistics
Hodnota, která určuje, jestli chceme vypočítat statistiku bodování (například četnost dokumentů) globálně pro konzistentnější bodování, nebo místně pro nižší latenci. Výchozí hodnota je "local". Globální použijte k globální agregaci statistik bodování po celém světě před bodováním. Použití statistik globálního bodování může zvýšit latenci vyhledávacích dotazů. Mezi možné hodnoty patří: "local", "global".
- session_id
- str
Hodnota, která se má použít k vytvoření rychlé relace, což může pomoct získat konzistentnější výsledky. Pokud se použije stejné id relace, provede se pokus o cílení na stejnou sadu replik. Buďte opatrní, že opakované opakované použití stejných hodnot sessionID může narušovat vyrovnávání zatížení požadavků napříč replikami a nepříznivě ovlivnit výkon vyhledávací služby. Hodnota použitá jako sessionId nemůže začínat znakem _.
- semantic_error_mode
- str nebo SemanticErrorMode
Umožňuje uživateli zvolit, jestli má sémantické volání zcela selhat (výchozí nebo aktuální chování), nebo vrátit částečné výsledky. Známé hodnoty jsou: "partial" a "fail".
- semantic_max_wait_in_milliseconds
- int
Umožňuje uživateli nastavit horní mez na dobu potřebnou k dokončení zpracování sémantického obohacení, než požadavek selže.
- vector_queries
- list[VectorQuery]
Parametry dotazu pro vektorové a hybridní vyhledávací dotazy.
- vector_filter_mode
- str nebo VectorFilterMode
Určuje, zda jsou filtry použity před nebo po provedení vektorového vyhledávání. Výchozí hodnota je preFilter. Známé hodnoty jsou: "postFilter" a "preFilter".
Návratový typ
Příklady
Získejte omezující vlastnosti výsledků hledání.
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
Získejte výsledky návrhů hledání z indexu služby Azure Search.
a maximálně 100 znaků. :p aram str suggester_name: Povinné. Název návrhu zadaný v kolekci návrhy, která je součástí definice indexu. :keyword str filter: Výraz OData, který filtruje dokumenty uvažované pro návrhy. :keyword bool use_fuzzy_matching: Hodnota označující, jestli se má pro návrhy použít přibližné párování
Dotazu. Výchozí hodnota je false. Pokud je nastavená hodnota true, dotaz vyhledá termíny, i když je ve hledaném textu nahrazený nebo chybí znak. I když to v některých scénářích poskytuje lepší prostředí, má to náklady na výkon, protože dotazy na přibližné návrhy jsou pomalejší a spotřebovávají více prostředků.
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]
Parametry
- highlight_post_tag
- str
Značka řetězce, která je připojena k dosažení zvýraznění. Musí být nastaven pomocí highlightPreTag. Pokud ho vynecháte, je zvýraznění návrhů zakázané.
- highlight_pre_tag
- str
Značka řetězce, která je předem připravená k dosažení zvýraznění. Musí být nastaven pomocí highlightPostTag. Pokud ho vynecháte, je zvýraznění návrhů zakázané.
- minimum_coverage
- float
Číslo mezi 0 a 100 označující procento indexu, které musí být pokryto návrhovým dotazem, aby se dotaz ohlásil jako úspěšný. Tento parametr může být užitečný pro zajištění dostupnosti vyhledávání i pro služby, které mají jenom jednu repliku. Výchozí hodnota je 80.
Seznam OData $orderby výrazy, podle kterých se mají výsledky seřadit. Každý výraz může být buď názvem pole, nebo voláním funkcí geo.distance() nebo search.score(). Za každým výrazem může následovat asc, který označuje vzestupně, nebo desc pro označení sestupně. Výchozí hodnota je vzestupné pořadí. Vazby budou přerušeny skóre shody dokumentů. Pokud není zadána žádná $orderby, výchozí pořadí řazení je sestupné podle skóre shody dokumentu. Může existovat maximálně 32 $orderby klauzulí.
Seznam názvů polí pro vyhledání zadaného hledaného textu. Cílová pole musí být zahrnuta v zadaném návrhu.
Seznam polí, která se mají načíst. Pokud není zadáno, bude do výsledků zahrnuto pouze pole s klíčem.
- top
- int
Počet návrhů, které se mají načíst. Hodnota musí být číslo mezi 1 a 100. Výchozí hodnota je 5.
Návraty
Seznam dokumentů.
Návratový typ
Příklady
Získejte návrhy hledání.
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
Nahrajte dokumenty do indexu Azure Search.
Akce nahrání se podobá akci upsert, do které se dokument vloží, pokud je nový, a pokud existuje, aktualizuje nebo nahradí. Všechna pole jsou v případě aktualizace nahrazena.
upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Parametry
Návraty
Seznam indexováníResult
Návratový typ
Příklady
Nahrání nových dokumentů do indexu
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