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 search.ismatchscoring 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ódon, amely nem lehetséges 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.

Szemantika

A következő EBNF (Extended Backus-Naur form) határozza meg a nyelvhelyesség és search.ismatch a search.ismatchscoring 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. Az eredményhalmaz egyező dokumentumokat ad vissza. 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. Amikor a Lucene logikai operátorokat használja a search paraméterben, azok elsőbbséget élveznek ezzel a paraméternel 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, hogy más szűrési részexpressziókkal írja meg a logikai operátorok használatával.

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, és szigorú szűrési egyezéseket használnak ugyanazon az objektumon. A korlátozással kapcsolatos további információkért és példákért tekintse meg 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 search.ismatcha dokumentum pontszáma 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.ismatch a search.ismatchscoring 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')

Itt találja a kérés teljes lekérdezési szintaxisát, amelyet a Search Explorerben futtathat az Azure Portalon. A kimenet vízparton, vízen és fronton lévő egyezésekből áll.

{
  "search": "*",
  "select": "HotelId, HotelName, Description",
  "searchMode": "all",
  "queryType": "simple",
  "count": true,
  "filter": "search.ismatchscoring('waterfront')"
}

Keresse meg a "készlet" szót tartalmazó és a 4-es vagy annál nagyobb minősítésű dokumentumokat, illetve a "motel" szóval és a 3,2-es értékkel egyenlő dokumentumokat. Vegye figyelembe, hogy ez a kérés nem fejezhető ki a search.ismatchscoring függvény nélkül.

    search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2

A Kereséskezelő kérésének teljes lekérdezésszintaxisa az alábbi. A kimenet a 4-nél nagyobb minősítésű szállodák, illetve a 3,2-es minősítésű motelek találataiból áll.

{
  "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"
}

Keresse meg a "luxus" szó nélküli dokumentumokat.

    not search.ismatch('luxury')

Íme a kérés teljes lekérdezési szintaxisa. A kimenet a luxus kifejezéshez tartozó egyezésekből áll.

{
  "search": "*",
  "select": "HotelId, HotelName, Description, Tags, Rating",
  "searchMode": "all",
  "queryType": "simple",
  "count": true,
  "filter": "not search.ismatch('luxury')"
}

Keresse meg az "ocean" vagy a 3,2 értékkel egyenlő minősítésű dokumentumokat. A search.ismatchscoring lekérdezés csak mezőkön HotelName és Description.

Íme a kérés teljes lekérdezési szintaxisa. A csak a tiltás második záradékának megfelelő dokumentumokat is visszaadja a rendszer (pontosabban az egyenlő 3.2értékű szállodákatRating). Annak érdekében, hogy egyértelmű legyen, hogy ezek a dokumentumok nem egyeznek a kifejezés egyik pontozott részével sem, nullával egyenlő pontszámmal lesznek visszaadva.

{
  "search": "*",
  "select": "HotelId, HotelName, Description, Rating",
  "searchMode": "all",
  "queryType": "full",
  "count": true,
  "filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}

A kimenet 4 találatból áll: a leírásban vagy a szállodanévben az "óceán" szót említő szállodák, vagy a 3,2-s minősítéssel rendelkező szállodák. Figyelje meg a második záradékban szereplő találatok nulla keresési pontszámát.

{
  "@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
    }
  ]
}

Keresse meg a dokumentumokat, ahol 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.

    search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)

Íme a teljes lekérdezési szintaxis. A Keresőböngészőben való futtatáshoz meneküljön el a belső idézőjelek elől fordított perjel karakterrel.

{
  "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)"
}

A kimenet egyetlen dokumentumból áll, ahol a "hotel" és a "repülőtér" kifejezés 5 szó távolságon belül van. A dohányzás a legtöbb szállodában több szobára engedélyezett, beleértve a keresési eredményben szereplőt is.

{
  "@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
    }
  ]
}

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

Íme egy teljes lekérdezés:

{
  "search": "*",
  "select": "HotelId, HotelName, Description, Tags, Rating",
  "searchMode": "all",
  "queryType": "simple",
  "count": true,
  "filter": "search.ismatch('lux*', 'Description')"
}

A kimenet a következő egyezésekből áll.

{
  "@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
    }
  ]
}

Következő lépések