Megosztás a következőn keresztül:


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.Booleanad 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.ismatchebben 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/Descriptiona .

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.ismatcha .

    search.ismatch('lux*', 'Description')

Következő lépések