Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
OData-funktioner för fulltextsökning i Azure AI-sökning –
Kommentar
Azure AI-sökning är tillgängligt via Azure-portalen, REST-API:er och Azure-SDK:er. Den ligger också till grund för Foundry IQ, det hanterade kunskapsskiktet som omvandlar företagsinnehåll till återanvändbara, behörighetsmedvetna kunskapsbaser för agenter i Microsoft Foundry-portalen.
Azure AI-sökning stöder fulltextsökning i kontexten för OData-filteruttryck via search.ismatch funktionerna och search.ismatchscoring . Med de här funktionerna kan du kombinera fulltextsökning med strikt boolesk filtrering på sätt som inte bara är möjliga med hjälp av parametern på den översta nivån search i sök-API:et.
Kommentar
Funktionerna search.ismatch och search.ismatchscoring stöds endast i filter i sök-API:et. De stöds inte i API:erna Föreslå eller Komplettera automatiskt .
Syntax
Följande EBNF (Extended Backus-Naur Form) definierar grammatiken för search.ismatch och search.ismatchscoring funktionerna.
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
Ett interaktivt syntaxdiagram är också tillgängligt:
Kommentar
Se syntaxreferens för OData-uttryck för Azure AI-sökning för hela EBNF.
search.ismatch
Funktionen search.ismatch utvärderar en fulltextsökningsfråga som en del av ett filteruttryck. Matchande dokument returneras i resultatuppsättningen. Följande överlagringar av den här funktionen är tillgängliga:
search.ismatch(search)search.ismatch(search, searchFields)search.ismatch(search, searchFields, queryType, searchMode)
Parametrarna definieras i följande tabell:
| Parameternamn | Typ | Beskrivning |
|---|---|---|
search |
Edm.String |
Sökfrågan (i antingen enkel eller fullständig Lucene-frågesyntax). |
searchFields |
Edm.String |
Kommaavgränsad lista över sökbara fält att söka i; standardvärdet för alla sökbara fält i indexet. När du använder fältsökning i parametern search åsidosätter fältspecificerarna i Lucene-frågan alla fält som anges i den här parametern. |
queryType |
Edm.String |
'simple' eller 'full'; standardinställningen är 'simple'. Anger vilket frågespråk som användes i parametern search . |
searchMode |
Edm.String |
'any' eller 'all', standardvärdet är 'any'. Anger om något eller alla söktermer i parametern search måste matchas för att kunna räkna dokumentet som en matchning. När du använder Lucene Boolean operatorer i search-parametern har de företräde över den här parametern. |
Alla ovanstående parametrar motsvarar motsvarande sökbegäransparametrar i sök-API:et.
Funktionen search.ismatch returnerar ett värde av typen Edm.Boolean, som gör att du kan skriva det med andra filterunderuttryck med hjälp av de booleska logiska operatorerna.
Kommentar
Azure AI-sökning stöder inte användning av search.ismatch eller search.ismatchscoring inuti lambda-uttryck. Det innebär att det inte går att skriva filter över samlingar av objekt som kan korrelera fulltextsökningsmatchningar med strikta filtermatchningar på samma objekt. Mer information om den här begränsningen och exempel finns i Felsöka samlingsfilter i Azure AI-sökning. Mer detaljerad information om varför den här begränsningen finns finns i Förstå samlingsfilter i Azure AI-sökning.
search.ismatchscoring
Funktionen search.ismatchscoring , precis som search.ismatch funktionen, returnerar true för dokument som matchar den fulltextsökningsfråga som skickas som en parameter. Skillnaden mellan dem är att relevanspoängen för dokument som matchar search.ismatchscoring sökfrågan bidrar till den totala dokumentpoängen, medan search.ismatch dokumentpoängen ändras inte. Följande överlagringar av den här funktionen är tillgängliga med parametrar som är identiska med de som används i search.ismatch.
search.ismatchscoring(search)search.ismatchscoring(search, searchFields)search.ismatchscoring(search, searchFields, queryType, searchMode)
search.ismatch Både funktionerna och search.ismatchscoring kan användas i samma filteruttryck.
Exempel
Hitta dokument med ordet "strandlinje". Den här filterfrågan är identisk med en sökbegäran med search=waterfront.
search.ismatchscoring('waterfront')
Här är den fullständiga frågesyntaxen för den här begäran, som du kan köra i Sökutforskaren i Azure-portalen. Utdata består av träffar på strandlinje, vatten och front.
{
"search": "*",
"select": "HotelId, HotelName, Description",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('waterfront')"
}
Hitta dokument med ordet "pool" och betyg större eller lika med 4, eller dokument med ordet "motell" och betyg lika med 3,2. Observera att den här begäran inte kunde uttryckas utan funktionen search.ismatchscoring .
search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2
Här är den fullständiga frågesyntaxen för den här begäran för Sökutforskaren. Resultatet består av matchningar på hotell med pooler med ett omdöme som är större än 4, eller motell med ett betyg som är lika med 3,2.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2"
}
Hitta dokument utan ordet "lyx".
not search.ismatch('luxury')
Här är den fullständiga frågesyntaxen för den här begäran. Utdata består av matchningar på termen lyx.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "not search.ismatch('luxury')"
}
Hitta dokument med frasen "ocean" eller en klassificering som är lika med 3,2. Frågan search.ismatchscoring körs endast mot fält HotelName och Description.
Här är den fullständiga frågesyntaxen för den här begäran. Dokument som endast matchar det andra villkoret i disjunktionen returneras också (specifikt hotell med Rating lika med 3.2). För att göra det klart att dokumenten inte matchade någon av de poängsatta delarna i uttrycket returneras de med poäng som är lika med noll.
{
"search": "*",
"select": "HotelId, HotelName, Description, Rating",
"searchMode": "all",
"queryType": "full",
"count": true,
"filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}
Utdata består av 4 matchningar: hotell som nämner "ocean" i Beskrivning eller Hotellnamn, eller hotell med betyget 3,2. Lägg märke till att sökpoängen är noll för matchningar i den andra satsen.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1.6076145,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Rating": 4.2
},
{
"@search.score": 1.0594962,
"HotelId": "41",
"HotelName": "Windy Ocean Motel",
"Description": "Oceanfront hotel overlooking the beach features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
"Rating": 3.5
},
{
"@search.score": 0,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Rating": 3.2
},
{
"@search.score": 0,
"HotelId": "26",
"HotelName": "Planetary Plaza & Suites",
"Description": "Extend Your Stay. Affordable home away from home, with amenities like free Wi-Fi, full kitchen, and convenient laundry service.",
"Rating": 3.2
}
]
}
Hitta dokument där termerna "hotell" och "flygplats" ligger inom 5 ord från varandra i beskrivningen av hotellet, och där rökning inte tillåts i åtminstone några av rummen.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Här är den fullständiga frågesyntaxen. Om du vill köra i Sökutforskaren kan du undvika de inre citattecknen med ett omvänt snedstreck.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('\"hotel airport\"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)"
}
Utdata består av ett enda dokument där termerna "hotell" och "flygplats" ligger inom ett avstånd av 5 ord. Rökning är tillåten för flera rum på de flesta hotell, inklusive den i det här sökresultatet.
{
"@odata.count": 1,
"value": [
{
"@search.score": 1,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Tags": [
"bar",
"free wifi",
"restaurant"
],
"Rating": 3.2
}
]
}
Hitta dokument som har ett ord som börjar med bokstäverna "lux" i fältet Beskrivning. Den här frågan använder prefixsökning i kombination med search.ismatch.
search.ismatch('lux*', 'Description')
Här är en fullständig fråga:
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('lux*', 'Description')"
}
Utdata består av följande matchningar.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Tags": [
"view",
"pool",
"restaurant"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "13",
"HotelName": "Luxury Lion Resort",
"Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.",
"Tags": [
"bar",
"concierge",
"restaurant"
],
"Rating": 4.1
},
{
"@search.score": 1,
"HotelId": "16",
"HotelName": "Double Sanctuary Resort",
"Description": "5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.",
"Tags": [
"view",
"pool",
"restaurant",
"bar",
"continental breakfast"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "14",
"HotelName": "Twin Vortex Hotel",
"Description": "New experience in the making. Be the first to experience the luxury of the Twin Vortex. Reserve one of our newly-renovated guest rooms today.",
"Tags": [
"bar",
"restaurant",
"concierge"
],
"Rating": 4.4
}
]
}