OData teljes szöveges keresési függvények az Azure AI Searchben – search.ismatch
és search.ismatchscoring
Az Azure AI Search támogatja a teljes szöveges keresést az OData-szűrőkifejezések kontextusában a search.ismatchscoring
search.ismatch
függvényeken keresztül. Ezek a függvények lehetővé teszik a teljes szöveges keresés és a szigorú logikai szűrés kombinálását olyan módokon, amelyek nem lehetségesek csak a Search API legfelső szintű search
paraméterének használatával.
Feljegyzés
A search.ismatch
függvények és search.ismatchscoring
a függvények csak a Keresési API szűrőiben támogatottak. A Javaslat vagy az Automatikus kiegészítés API-k nem támogatják őket.
Syntax
A következő EBNF (Extended Backus-Naur form) határozza meg a nyelvhelyesség és search.ismatchscoring
a search.ismatch
függvények:
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'"
Interaktív szintaxisdiagram is elérhető:
Feljegyzés
A teljes EBNF-hez tekintse meg az Azure AI Search OData-kifejezésszintaxis-hivatkozását.
search.ismatch
A search.ismatch
függvény egy teljes szöveges keresési lekérdezést értékel ki egy szűrőkifejezés részeként. A keresési lekérdezésnek megfelelő dokumentumokat a rendszer visszaadja az eredményhalmazban. A függvény alábbi túlterhelései érhetők el:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
A paraméterek a következő táblázatban vannak definiálva:
Paraméter neve | Típus | Leírás |
---|---|---|
search |
Edm.String |
A keresési lekérdezés (egyszerű vagy teljes Lucene lekérdezési szintaxissal). |
searchFields |
Edm.String |
A kereshető mezők vesszővel tagolt listája; alapértelmezés szerint az index összes kereshető mezőjére. Ha mezős keresést használ a search paraméterben, a Lucene lekérdezés mezőjelölői felülbírálják a paraméterben megadott mezőket. |
queryType |
Edm.String |
'simple' vagy 'full' ; alapértelmezett értéke: 'simple' . Megadja, hogy milyen lekérdezési nyelvet használt a search paraméter. |
searchMode |
Edm.String |
'any' vagy 'all' az alapértelmezett érték.'any' Azt jelzi, hogy a paraméterben szereplő search keresési kifejezéseket egyezni kell-e a dokumentum egyezésként való megszámlálásához. Ha a Lucene logikai operátorokat használja a search paraméterben, azok elsőbbséget élveznek ezzel a paraméterrel szemben. |
A fenti paraméterek megegyeznek a Keresési API megfelelő keresési kérési paramétereinek.
A search.ismatch
függvény egy típusértéket Edm.Boolean
ad vissza, amely lehetővé teszi a logikai operátorok használatával más szűrőalkifejezésekkel való összeírását.
Feljegyzés
Az Azure AI Search nem támogatja a lambdakifejezések használatát search.ismatch
vagy search.ismatchscoring
azon belüli használatát. Ez azt jelenti, hogy nem lehet szűrőket írni olyan objektumgyűjtemények fölé, amelyek korrelálhatják a teljes szöveges keresési egyezéseket az ugyanazon az objektumon szigorú szűrési egyezésekkel. A korlátozással kapcsolatos további részletekért és példákért lásd az Azure AI Search gyűjteményszűrőinek hibaelhárítását. A korlátozás okaival kapcsolatos részletesebb információkért tekintse meg az Azure AI Search gyűjteményszűrőinek ismertetését.
search.ismatchscoring
A search.ismatchscoring
függvény a search.ismatch
függvényhez hasonlóan olyan dokumentumokhoz ad vissza true
, amelyek megfelelnek a paraméterként átadott teljes szöveges keresési lekérdezésnek. A különbség köztük az, hogy a lekérdezésnek megfelelő search.ismatchscoring
dokumentumok relevanciapontszáma hozzájárul a teljes dokumentumpontszámhoz, míg a dokumentum pontszáma search.ismatch
ebben az esetben nem változik. A függvény alábbi túlterhelései a következő paraméterekkel search.ismatch
érhetők el:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
A függvények és search.ismatchscoring
a search.ismatch
függvények is használhatók ugyanabban a szűrőkifejezésben.
Példák
Keresse meg a "waterfront" szót tartalmazó dokumentumokat. Ez a szűrő lekérdezés megegyezik a keresési kéréssel a következővel search=waterfront
: .
search.ismatchscoring('waterfront')
Keresse meg a "hostel" szót és a 4-es vagy annál nagyobb minősítésű dokumentumokat, vagy a "motel" és az 5-ös minősítésű dokumentumokat. Vegye figyelembe, hogy ez a kérés nem fejezhető ki a search.ismatchscoring
függvény nélkül.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Keresse meg a "luxus" szó nélküli dokumentumokat.
not search.ismatch('luxury')
Keresse meg az "óceánnézet" vagy az 5-nek megfelelő minősítésű dokumentumokat. A search.ismatchscoring
lekérdezés csak a mezőkön HotelName
és Rooms/Description
a .
Azokat a dokumentumokat is visszaadjuk, amelyek csak a tiltás második záradékának megfelelőek – 5-nek Rating
megfelelő szállodák. Annak érdekében, hogy egyértelmű legyen, hogy ezek a dokumentumok nem egyeznek a kifejezés egyik pontozott részével sem, a rendszer nullával egyenlő pontszámmal adja vissza őket.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Keresse meg azokat a dokumentumokat, amelyekben a "szálloda" és a "repülőtér" kifejezés 5 szóra van egymástól a szálloda leírásában, és ahol a dohányzás nem engedélyezett legalább néhány szobában. Ez a lekérdezés a teljes Lucene lekérdezési nyelvet használja.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Keresse meg a Leírás mezőben a "lux" betűvel kezdődő szavakat tartalmazó dokumentumokat. Ez a lekérdezés az előtagkeresést és search.ismatch
a .
search.ismatch('lux*', 'Description')