Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Funktionen der OData-Volltextsuche in Azure KI Search:
Azure KI Search unterstützt Volltextsuche im Kontext von OData-Filterausdrücken über die Funktionen search.ismatch
und search.ismatchscoring
. Mit diesen Funktionen können Sie die Volltextsuche mit strenger boolescher Filterung kombinieren, die nicht nur mithilfe des Parameters der obersten Ebene search
der Such-API möglich sind.
Hinweis
Die Funktionen search.ismatch
und search.ismatchscoring
werden nur in Filtern in der Search-API unterstützt. Sie werden in den APIs " Vorschlagen " oder " AutoVervollständigen " nicht unterstützt.
Syntax
Die folgende EBNF (Erweiterte Backus-Naur-Form) definiert die Grammatik der Funktionen search.ismatch
und search.ismatchscoring
:
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'"
Ein interaktives Syntaxdiagramm ist ebenfalls verfügbar:
Hinweis
Die vollständige EBNF finden Sie in der Referenz zur OData-Ausdruckssyntax für Azure KI Search.
search.ismatch
Die Funktion search.ismatch
wertet eine Volltextsuchabfrage als Teil eines Filterausdrucks aus. Übereinstimmende Dokumente werden im Resultset zurückgegeben. Die folgenden Überladungen dieser Funktion sind verfügbar:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
Die Parameter werden in der folgenden Tabelle definiert:
Parametername | Type | Beschreibung |
---|---|---|
search |
Edm.String |
Die Suchabfrage (in der einfachen oder vollständigen Lucene-Abfragesyntax). |
searchFields |
Edm.String |
Durch Trennzeichen getrennte Liste von durchsuchbaren Feldern, in denen gesucht werden soll. Standardmäßig werden alle durchsuchbaren Felder im Index durchsucht. Wenn Sie die search Feldsuche im Parameter verwenden, überschreiben die Feldbezeichner in der Lucene-Abfrage alle in diesem Parameter angegebenen Felder. |
queryType |
Edm.String |
'simple' oder 'full' , der Standardwert ist 'simple' . Gibt an, welche Abfragesprache im search -Parameter verwendet wurde. |
searchMode |
Edm.String |
'any' oder 'all' , der Standardwert ist 'any' . Gibt an, ob für beliebige oder alle der Suchbegriffe im Parameter search Übereinstimmungen gefunden werden müssen, damit das Dokument in den Ergebnissen zurückgegeben wird. Wenn Sie die Lucene Boolean-Operatoren im search Parameter verwenden, haben sie Vorrang vor diesem Parameter. |
Alle der oben aufgeführten Parameter sind gleichwertig mit den entsprechenden Suchanforderungsparametern in der Search-API.
Die search.ismatch
Funktion gibt einen Wert vom Typ zurück, mit dem Sie ihn mit anderen Filterunterausdrücke mithilfe der logischen Operatoren vom Typ Edm.Boolean
Boolean verfassen können.
Hinweis
Azure AI Search unterstützt nicht die Verwendung oder search.ismatchscoring
innerhalb von search.ismatch
Lambda-Ausdrücken. Dies bedeutet, dass es nicht möglich ist, Filter über Auflistungen von Objekten zu schreiben, die Übereinstimmungen der Volltextsuche mit strengen Filterüberstimmungen für dasselbe Objekt korrelieren können. Weitere Informationen zu dieser Einschränkung sowie Beispiele finden Sie unter Problembehandlung von Sammlungsfiltern in Azure AI Search. Ausführlichere Informationen dazu, warum diese Einschränkung vorhanden ist, finden Sie unter Grundlegendes zu Sammlungsfiltern in Azure KI Search.
search.ismatchscoring
Die Funktion search.ismatchscoring
gibt ebenso wie die Funktion search.ismatch
true
für Dokumente zurück, die mit der als Parameter übergebenen Volltextsuchabfrage übereinstimmen. Der Unterschied besteht darin, dass die Relevanzbewertung von Dokumenten, die der search.ismatchscoring
Abfrage entsprechen, zur Gesamtdokumentbewertung beiträgt, während sich die Dokumentbewertung für search.ismatch
die Dokumentbewertung nicht ändert. Die folgenden Überladungen dieser Funktion sind verfügbar (mit den gleichen Parametern wie bei search.ismatch
):
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
Die Funktionen search.ismatch
und search.ismatchscoring
können beide im selben Filterausdruck verwendet werden.
Beispiele
Suche nach Dokumenten mit dem Wort „waterfront“. Diese Filterabfrage ist identisch mit einer Suchanforderung mit search=waterfront
.
search.ismatchscoring('waterfront')
Hier sehen Sie die vollständige Abfragesyntax für diese Anforderung, die Sie im Such-Explorer im Azure-Portal ausführen können. Die Ausgabe besteht aus Übereinstimmungen am Wasser, wasser und vorne.
{
"search": "*",
"select": "HotelId, HotelName, Description",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('waterfront')"
}
Suchen Sie Dokumente mit dem Wort "Pool" und der Bewertung größer oder gleich 4, oder Dokumente mit dem Wort "Motel" und gleich 3,2. Beachten Sie, dass diese Anforderung nicht ohne die search.ismatchscoring
Funktion ausgedrückt werden konnte.
search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2
Hier sehen Sie die vollständige Abfragesyntax für diese Anforderung für den Such-Explorer. Die Ausgabe besteht aus Übereinstimmungen in Hotels mit Pools mit einer Bewertung größer als 4 oder Hotels mit einer Bewertung von 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"
}
Suche nach Dokumenten ohne das Wort „luxury“:
not search.ismatch('luxury')
Dies ist die vollständige Abfragesyntax für diese Anforderung. Die Ausgabe besteht aus Übereinstimmungen auf dem Begriff Luxus.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "not search.ismatch('luxury')"
}
Suchen Sie Dokumente mit dem Ausdruck "Ozean" oder "Bewertung" gleich 3,2. Die search.ismatchscoring
Abfrage wird nur für Felder HotelName
und Description
.
Dies ist die vollständige Abfragesyntax für diese Anforderung. Dokumente, die nur mit der zweiten Klausel der Disjunktion übereinstimmen, werden ebenfalls zurückgegeben (insbesondere Hotels mit Rating
gleichem Wert 3.2
). Um deutlich zu machen, dass diese Dokumente keinem der bewerteten Teile des Ausdrucks entsprechen, werden sie mit dem Ergebnis gleich Null zurückgegeben.
{
"search": "*",
"select": "HotelId, HotelName, Description, Rating",
"searchMode": "all",
"queryType": "full",
"count": true,
"filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}
Die Ausgabe besteht aus 4 Übereinstimmungen: Hotels, die "Ozean" im Beschreibungs- oder Hotelnamen erwähnen, oder Hotels mit einer Bewertung von 3.2. Beachten Sie die Suchbewertung null für Übereinstimmungen in der zweiten Klausel.
{
"@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
}
]
}
Finden Sie Dokumente, in denen sich die Begriffe "Hotel" und "Flughafen" innerhalb von 5 Wörtern in der Beschreibung des Hotels befinden und wo rauchen in mindestens einigen der Zimmer nicht erlaubt ist.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Dies ist die vollständige Abfragesyntax. Wenn Sie im Such-Explorer ausgeführt werden möchten, escapen Sie den innen nen Anführungszeichen mit einem umgekehrten Schrägstrich.
{
"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)"
}
Die Ausgabe besteht aus einem einzelnen Dokument, in dem die Begriffe "Hotel" und "Flughafen" innerhalb von 5 Wörtern Abstand liegen. Das Rauchen ist für mehrere Zimmer in den meisten Hotels zulässig, einschließlich der in diesem Suchergebnis.
{
"@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
}
]
}
Suchen Sie im Feld „Beschreibung“ nach Dokumenten mit einem Wort, das mit den Buchstaben „lux“ beginnt. Diese Abfrage verwendet die Präfixsuche in Kombination mit search.ismatch
.
search.ismatch('lux*', 'Description')
Hier ist eine vollständige Abfrage:
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('lux*', 'Description')"
}
Die Ausgabe besteht aus den folgenden Übereinstimmungen.
{
"@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
}
]
}