Dela via


SearchClient Klass

En klient för att interagera med ett befintligt Azure Search-index.

Arv
azure.search.documents._headers_mixin.HeadersMixin
SearchClient

Konstruktor

SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)

Parametrar

endpoint
str
Obligatorisk

URL-slutpunkten för en Azure Search-tjänst

index_name
str
Obligatorisk

Namnet på indexet som ska anslutas till

credential
AzureKeyCredential eller TokenCredential
Obligatorisk

En autentiseringsuppgift för att auktorisera sökklientbegäranden

api_version
str

Den Search API-version som ska användas för begäranden.

audience
str

anger vilken målgrupp som ska användas för autentisering med Azure Active Directory (AAD). Målgruppen beaktas inte när du använder en delad nyckel. Om målgruppen inte tillhandahålls antas målgruppen för det offentliga molnet.

Exempel

Skapa SearchClient med en API-nyckel.


   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))

Metoder

autocomplete

Hämta resultat för automatisk slutförande av sökning från Azure Search-indexet.

samling som ingår i indexdefinitionen. :nyckelordsläge: Anger läget för Komplettera automatiskt. Standardvärdet är "oneTerm". Användning

"twoTerms" för att få bältros och "oneTermWithContext" för att använda den aktuella kontexten medan de skapar automatiskt slutförda termer. Möjliga värden är: "oneTerm", "twoTerms", "oneTermWithContext".

close

SearchClient Stäng sessionen.

delete_documents

Ta bort dokument från Azure Search-indexet

Ta bort tar bort det angivna dokumentet från indexet. Alla fält som du anger i en borttagningsåtgärd, förutom nyckelfältet, ignoreras. Om du vill ta bort ett enskilt fält från ett dokument använder du merge_documents i stället och anger fältet uttryckligen till Ingen.

Borttagningsåtgärder är idempotenta. Det innebär att även om det inte finns någon dokumentnyckel i indexet resulterar ett borttagningsförsök med nyckeln i en statuskod på 200.

get_document

Hämta ett dokument från Azure Search-indexet med dess nyckel.

get_document_count

Returnera antalet dokument i Azure Search-indexet.

index_documents

Ange en dokumentåtgärd som ska utföras som en batch.

:Höjer RequestEntityTooLargeError

merge_documents

Koppla dokument till befintliga dokument i Azure Search-indexet.

Sammanfoga uppdaterar ett befintligt dokument med de angivna fälten. Om dokumentet inte finns misslyckas kopplingen. Alla fält som du anger i en sammanfogning ersätter det befintliga fältet i dokumentet. Detta gäller även för samlingar av primitiva och komplexa typer.

merge_or_upload_documents

Koppla dokument till befintliga dokument i Azure Search-indexet eller ladda upp dem om de inte finns ännu.

Den här åtgärden fungerar som merge_documents om det redan finns ett dokument med den angivna nyckeln i indexet. Om dokumentet inte finns fungerar det som upload_documents med ett nytt dokument.

search

Sök efter dokument i Azure Search-indexet.

suggest

Hämta sökresultat från Azure Search-indexet.

och högst 100 tecken. :p aram str suggester_name: Krävs. Namnet på förslagstagaren enligt beskrivningen i den förslagssamling som ingår i indexdefinitionen. :keyword str filter: Ett OData-uttryck som filtrerar de dokument som övervägs för förslag. :keyword bool use_fuzzy_matching: Ett värde som anger om fuzzy-matchning ska användas för förslagen

Fråga. Standardvärdet är false. När värdet är true hittar frågan termer även om det finns ett ersatt eller saknat tecken i söktexten. Även om detta ger en bättre upplevelse i vissa scenarier, innebär det en prestandakostnad eftersom fuzzy-förslagsfrågor är långsammare och förbrukar mer resurser.

upload_documents

Ladda upp dokument till Azure Search-indexet.

En uppladdningsåtgärd liknar en "upsert" där dokumentet infogas om det är nytt och uppdateras/ersätts om det finns. Alla fält ersätts i uppdateringsfallet.

autocomplete

Hämta resultat för automatisk slutförande av sökning från Azure Search-indexet.

samling som ingår i indexdefinitionen. :nyckelordsläge: Anger läget för Komplettera automatiskt. Standardvärdet är "oneTerm". Användning

"twoTerms" för att få bältros och "oneTermWithContext" för att använda den aktuella kontexten medan de skapar automatiskt slutförda termer. Möjliga värden är: "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]

Parametrar

filter
str

Ett OData-uttryck som filtrerar de dokument som används för att skapa slutförda termer för resultatet Komplettera automatiskt.

use_fuzzy_matching
bool

Ett värde som anger om fuzzy-matchning ska användas för den automatiska kompletteringsfrågan. Standardvärdet är false. När värdet är true hittar frågan termer även om det finns ett ersatt eller saknat tecken i söktexten. Detta ger en bättre upplevelse i vissa scenarier, men det medför en prestandakostnad eftersom fuzzy autocomplete-frågor är långsammare och förbrukar fler resurser.

highlight_post_tag
str

En strängtagg som läggs till för att träffa höjdpunkter. Måste anges med highlightPreTag. Om det utelämnas inaktiveras träffmarkeringen.

highlight_pre_tag
str

En strängtagg som förbereds för att träffa höjdpunkter. Måste anges med highlightPostTag. Om det utelämnas inaktiveras träffmarkeringen.

minimum_coverage
float

Ett tal mellan 0 och 100 som anger procentandelen av indexet som måste omfattas av en automatisk kompletteringsfråga för att frågan ska rapporteras som lyckad. Den här parametern kan vara användbar för att säkerställa söktillgänglighet även för tjänster med endast en replik. Standardvärdet är 80.

search_fields
list[str]

Listan över fältnamn att tänka på när du frågar efter automatiskt slutförda termer. Målfält måste inkluderas i den angivna förslagsspelaren.

top
int

Antalet automatiskt slutförda termer som ska hämtas. Detta måste vara ett värde mellan 1 och 100. Standardvärdet är 5.

Returtyp

Exempel

Få en automatisk komplettering.


   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

SearchClient Stäng sessionen.

close() -> None

delete_documents

Ta bort dokument från Azure Search-indexet

Ta bort tar bort det angivna dokumentet från indexet. Alla fält som du anger i en borttagningsåtgärd, förutom nyckelfältet, ignoreras. Om du vill ta bort ett enskilt fält från ett dokument använder du merge_documents i stället och anger fältet uttryckligen till Ingen.

Borttagningsåtgärder är idempotenta. Det innebär att även om det inte finns någon dokumentnyckel i indexet resulterar ett borttagningsförsök med nyckeln i en statuskod på 200.

delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]

Parametrar

documents
list[dict]
Obligatorisk

En lista över dokument som ska tas bort.

Returer

Lista över IndexingResult

Returtyp

Exempel

Ta bort befintliga dokument till ett index


   result = search_client.delete_documents(documents=[{"hotelId": "1000"}])

   print("Delete new document succeeded: {}".format(result[0].succeeded))

get_document

Hämta ett dokument från Azure Search-indexet med dess nyckel.

get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict

Parametrar

key
str
Obligatorisk

Det primära nyckelvärdet för dokumentet som ska hämtas

selected_fields
list[str]
Obligatorisk

en lista över tillåtna fält som ska inkluderas i resultatet

Returer

Dokumentet som lagras i Azure Search-indexet

Returtyp

Exempel

Hämta ett specifikt dokument från sökindexet.


   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

Returnera antalet dokument i Azure Search-indexet.

get_document_count(**kwargs: Any) -> int

Returer

Antalet dokument i indexet

Returtyp

int

index_documents

Ange en dokumentåtgärd som ska utföras som en batch.

:Höjer RequestEntityTooLargeError

index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]

Parametrar

batch
IndexDocumentsBatch
Obligatorisk

En batch med dokumentåtgärder som ska utföras.

Returer

Lista över IndexingResult

Returtyp

merge_documents

Koppla dokument till befintliga dokument i Azure Search-indexet.

Sammanfoga uppdaterar ett befintligt dokument med de angivna fälten. Om dokumentet inte finns misslyckas kopplingen. Alla fält som du anger i en sammanfogning ersätter det befintliga fältet i dokumentet. Detta gäller även för samlingar av primitiva och komplexa typer.

merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]

Parametrar

documents
list[dict]
Obligatorisk

En lista över dokument som ska sammanfogas.

Returer

Lista över IndexingResult

Returtyp

Exempel

Sammanfoga fält i befintliga dokument till ett index


   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

Koppla dokument till befintliga dokument i Azure Search-indexet eller ladda upp dem om de inte finns ännu.

Den här åtgärden fungerar som merge_documents om det redan finns ett dokument med den angivna nyckeln i indexet. Om dokumentet inte finns fungerar det som upload_documents med ett nytt dokument.

merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]

Parametrar

documents
list[dict]
Obligatorisk

En lista över dokument som ska kopplas eller laddas upp.

Returer

Lista över IndexingResult

Returtyp

Sök efter dokument i Azure Search-indexet.

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]

Parametrar

search_text
str
Obligatorisk

Ett frågeuttryck för fulltextsökning; Använd "*" eller utelämna den här parametern för att matcha alla dokument.

include_total_count
bool

Ett värde som anger om det totala antalet resultat ska hämtas. Standardvärdet är false. Att ange det här värdet till true kan ha en prestandapåverkan. Observera att det antal som returneras är en uppskattning.

facets
list[str]

Listan över fasetteringsuttryck som ska tillämpas på sökfrågan. Varje fasetteringsuttryck innehåller ett fältnamn, eventuellt följt av en kommaavgränsad lista med namn:värdepar.

filter
str

OData-$filter uttryck som ska tillämpas på sökfrågan.

highlight_fields
str

Den kommaavgränsade listan med fältnamn som ska användas för träffhöjdpunkter. Endast sökbara fält kan användas för träffmarkering.

highlight_post_tag
str

En strängtagg som läggs till för att träffa höjdpunkter. Måste anges med highlightPreTag. Standardvärdet är .

highlight_pre_tag
str

En strängtagg som förbereds för att träffa höjdpunkter. Måste anges med highlightPostTag. Standardvärdet är .

minimum_coverage
float

Ett tal mellan 0 och 100 som anger procentandelen av indexet som måste täckas av en sökfråga för att frågan ska rapporteras som lyckad. Den här parametern kan vara användbar för att säkerställa söktillgänglighet även för tjänster med endast en replik. Standardvärdet är 100.

order_by
list[str]

Listan över OData-$orderby uttryck som resultatet ska sorteras efter. Varje uttryck kan vara antingen ett fältnamn eller ett anrop till funktionerna geo.distance() eller search.score(). Varje uttryck kan följas av asc för att indikera stigande och desc för att indikera fallande. Standardvärdet är stigande ordning. Oavgjort kommer att brytas av matchningspoängen för dokument. Om ingen OrderBy anges är standardsorteringsordningen fallande efter dokumentmatchningspoäng. Det kan finnas högst 32 $orderby-satser.

query_type
str eller QueryType

Ett värde som anger syntaxen för sökfrågan. Standardvärdet är "enkelt". Använd "full" om frågan använder Lucene-frågesyntaxen. Möjliga värden är: 'simple', 'full', "semantic".

scoring_parameters
list[str]

Listan över parametervärden som ska användas i bedömningsfunktioner (till exempel referencePointParameter) med formatet name-values. Om bedömningsprofilen till exempel definierar en funktion med parametern "mylocation" skulle parametersträngen vara "mylocation–122.2,44.8" (utan citattecken).

scoring_profile
str

Namnet på en bedömningsprofil för att utvärdera matchningspoäng för matchande dokument för att sortera resultaten.

search_fields
list[str]

Listan över fältnamn som fulltextsökningen ska omfångsbegränsas till. När du använder fältsökning (fieldName:searchExpression) i en fullständig Lucene-fråga har fältnamnen för varje fältsökuttryck företräde framför alla fältnamn som anges i den här parametern.

search_mode
str eller SearchMode

Ett värde som anger om några eller alla söktermer måste matchas för att kunna räkna dokumentet som en matchning. Möjliga värden är: "any", "all".

query_answer
str eller QueryAnswerType

Den här parametern är endast giltig om frågetypen är "semantisk". Om den anges returnerar frågan svar som extraherats från nyckelavsnitt i de högst rankade dokumenten. Möjliga värden är: "none", "extractive".

query_answer_count
int

Den här parametern är endast giltig om frågetypen är "semantisk" och frågesvaret är "extractive". Konfigurerar antalet svar som returneras. Standardantalet är 1.

query_answer_threshold
float

Den här parametern är endast giltig om frågetypen är "semantisk" och frågesvaret är "extractive". Konfigurerar tröskelvärdet för antal konfidens. Standardantalet är 0,7.

query_caption
str eller QueryCaptionType

Den här parametern är endast giltig om frågetypen är "semantisk". Om den anges returnerar frågan undertexter som extraherats från nyckelpassagen i de högst rankade dokumenten. Standardvärdet är "Ingen". Möjliga värden är: "none", "extractive".

query_caption_highlight_enabled
bool

Den här parametern är endast giltig om frågetypen är "semantisk" när frågan bildtext är inställd på "extractive". Avgör om markering är aktiverat. Standardvärdet är "true".

semantic_configuration_name
str

Namnet på den semantiska konfiguration som ska användas vid bearbetning av dokument för frågor av typen semantik.

select
list[str]

Listan över fält som ska hämtas. Om det inte anges inkluderas alla fält som markerats som hämtningsbara i schemat.

skip
int

Antalet sökresultat att hoppa över. Det här värdet får inte vara större än 100 000. Om du behöver skanna dokument i följd, men inte kan använda $skip på grund av den här begränsningen, bör du överväga att använda $orderby på en helt ordnad nyckel och $filter med en intervallfråga i stället.

top
int

Antalet sökresultat som ska hämtas. Detta kan användas tillsammans med $skip för att implementera sidindelning på klientsidan av sökresultat. Om resultaten trunkeras på grund av sidindelning på serversidan innehåller svaret en fortsättningstoken som kan användas för att utfärda en annan sökbegäran för nästa sida med resultat.

scoring_statistics
str eller ScoringStatistics

Ett värde som anger om vi vill beräkna bedömningsstatistik (till exempel dokumentfrekvens) globalt för mer konsekvent bedömning eller lokalt för kortare svarstider. Standardvärdet är "lokal". Använd "global" för att aggregera bedömningsstatistik globalt före bedömning. Användning av global bedömningsstatistik kan öka svarstiden för sökfrågor. Möjliga värden är: "local", "global".

session_id
str

Ett värde som ska användas för att skapa en fäst session, vilket kan hjälpa dig att få mer konsekventa resultat. Så länge samma sessionId används görs ett bästa försök att rikta in sig på samma replikuppsättning. Var försiktig så att återanvändning av samma sessionID-värden upprepade gånger kan störa belastningsutjämningen av begäranden mellan repliker och negativt påverka söktjänstens prestanda. Värdet som används som sessionId kan inte börja med ett _-tecken.

semantic_error_mode
str eller SemanticErrorMode

Gör att användaren kan välja om ett semantiskt anrop ska misslyckas helt (standard/aktuellt beteende) eller att returnera partiella resultat. Kända värden är: "partial" och "fail".

semantic_max_wait_in_milliseconds
int

Tillåter att användaren anger en övre gräns för hur lång tid det tar för semantisk berikning att slutföra bearbetningen innan begäran misslyckas.

vector_queries
list[VectorQuery]

Frågeparametrarna för vektor- och hybridsökfrågor.

vector_filter_mode
str eller VectorFilterMode

Avgör om filter tillämpas före eller efter att vektorsökningen utförs. Standardvärdet är "preFilter". Kända värden är: "postFilter" och "preFilter".

Returtyp

Exempel

Hämta sökresultatfasetter.


   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

Hämta sökresultat från Azure Search-indexet.

och högst 100 tecken. :p aram str suggester_name: Krävs. Namnet på förslagstagaren enligt beskrivningen i den förslagssamling som ingår i indexdefinitionen. :keyword str filter: Ett OData-uttryck som filtrerar de dokument som övervägs för förslag. :keyword bool use_fuzzy_matching: Ett värde som anger om fuzzy-matchning ska användas för förslagen

Fråga. Standardvärdet är false. När värdet är true hittar frågan termer även om det finns ett ersatt eller saknat tecken i söktexten. Även om detta ger en bättre upplevelse i vissa scenarier, innebär det en prestandakostnad eftersom fuzzy-förslagsfrågor är långsammare och förbrukar mer resurser.

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]

Parametrar

highlight_post_tag
str

En strängtagg som läggs till för att träffa höjdpunkter. Måste anges med highlightPreTag. Om det utelämnas inaktiveras markering av förslag.

highlight_pre_tag
str

En strängtagg som förbereds för att träffa höjdpunkter. Måste anges med highlightPostTag. Om det utelämnas inaktiveras markering av förslag.

minimum_coverage
float

Ett tal mellan 0 och 100 som anger procentandelen av indexet som måste omfattas av en förslagsfråga för att frågan ska rapporteras som lyckad. Den här parametern kan vara användbar för att säkerställa söktillgänglighet även för tjänster med endast en replik. Standardvärdet är 80.

order_by
list[str]

Listan över OData-$orderby uttryck som resultatet ska sorteras efter. Varje uttryck kan vara antingen ett fältnamn eller ett anrop till funktionerna geo.distance() eller search.score(). Varje uttryck kan följas av asc för att indikera stigande eller desc för att indikera fallande. Standardvärdet är stigande ordning. Oavgjort kommer att brytas av matchningspoängen för dokument. Om ingen $orderby anges är standardsorteringsordningen fallande efter dokumentmatchningspoäng. Det kan finnas högst 32 $orderby-satser.

search_fields
list[str]

Listan över fältnamn som ska söka efter den angivna söktexten. Målfält måste inkluderas i den angivna förslagsspelaren.

select
list[str]

Listan över fält som ska hämtas. Om det är ospecificerat inkluderas endast nyckelfältet i resultaten.

top
int

Antalet förslag som ska hämtas. Värdet måste vara ett tal mellan 1 och 100. Standardvärdet är 5.

Returer

Lista över dokument.

Returtyp

Exempel

Hämta sökförslag.


   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

Ladda upp dokument till Azure Search-indexet.

En uppladdningsåtgärd liknar en "upsert" där dokumentet infogas om det är nytt och uppdateras/ersätts om det finns. Alla fält ersätts i uppdateringsfallet.

upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]

Parametrar

documents
list[dict]
Obligatorisk

En lista över dokument som ska laddas upp.

Returer

Lista över IndexingResult

Returtyp

Exempel

Ladda upp nya dokument till ett index


   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))