A dokumentum rangsorolásának javítása a kifejezések kiemelésével

Befejeződött

A keresés akkor működik a legjobban, ha a legrelevánsabb találatok jelennek meg először. Minden keresőmotor megpróbálja visszaadni a legrelevánsabb eredményeket a keresési lekérdezésekhez. Az Azure AI Search az Apache Lucene továbbfejlesztett verzióját implementálja a teljes szöveges kereséshez.

Itt megismerheti, hogyan írhat összetettebb Lucene-lekérdezéseket. Ezután a keresési lekérdezés adott kifejezéseinek kiemelésével javíthatja az eredmények relevanciáját.

Keresés az indexekben

Az Azure AI Search lehetővé teszi egy index lekérdezését REST-végponttal vagy az Azure Portalon belül a keresőböngésző eszközzel. Ha gyorsan szeretné áttekinteni a lekérdezésfeldolgozás szakaszait, tekintse meg az Azure AI Search-megoldás létrehozása keresési indexelési egységét.

A diagram showing the four stages of query processing.

Ebben a leckében a lekérdezések elemzésére fog összpontosítani.

A keresővel láthatja, hogy mi a különbség az egyszerű és a teljes lekérdezéstípus használata között, amely módosítja a keresési eredményeket.

Feljegyzés

Ha saját maga szeretné futtatni a lekérdezéseket, szüksége lesz egy Azure-előfizetésre. Hozzon létre egy Azure AI-Search szolgáltatás, és importálja a szállodák mintaadatait egy indexbe.

Egyszerű lekérdezés írása

A szálloda mintaadatai 50 szállodát tartalmaznak leírásokkal, szobaadatokkal és azok helyszíneivel. Tegyük fel, hogy szállodai foglalási vállalkozást futtat, és rendelkezik egy olyan alkalmazással, amellyel a felhasználók szállodát foglalhatnak. A felhasználók kereshetnek, és először a legrelevánsabb szállodákat kell megjeleníteni.

Van egy használati esete, ahol egy ügyfél luxusszállodát keres. Első lépésként tekintse meg az alábbi egyszerű lekérdezés keresési eredményeit:

search=luxury&$select=HotelId, HotelName, Category, Tags, Description&$count=true

A lekérdezési elemzések az indexben lévő dokumentum összes mezőjében keresik a kifejezést luxury .

A lekérdezési sztring a visszaadott mezőket is korlátozza a dokumentumokból a select beállítás hozzáadásával.

&$select=HotelId, HotelName, Category, Tags, Description

A lekérdezés utolsó paramétere arra kéri az indexet, hogy számolja meg a teljes eredményeket.

$count=true

Nincs szükség lexikális elemzésre, ezért a dokumentumlekérés 14 dokumentumot ad vissza. Az első három a következő:

{
  "@odata.context": "https://advanced-cognitive-search.search.windows.net/indexes('hotels-sample-index')/$metadata#docs(*)",
  "@odata.count": 14,
  "value": [
    {
      "@search.score": 2.633778,
      "HotelId": "13",
      "HotelName": "Historic Lion Resort",
      "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
      "Category": "Budget",
      "Tags": [
        "view",
        "free wifi",
        "free wifi"
      ]
    },
    {
      "@search.score": 2.1104424,
      "HotelId": "18",
      "HotelName": "Oceanside Resort",
      "Description": "New Luxury Hotel.  Be the first to stay. Bay views from every room, location near the piper, rooftop pool, waterfront dining & more.",
      "Category": "Budget",
      "Tags": [
        "view",
        "laundry service",
        "air conditioning"
      ]
    },
    {
      "@search.score": 1.966516,
      "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.",
      "Category": "Luxury",
      "Tags": [
        "continental breakfast",
        "view",
        "view"
      ]
    },
    ...
  ]
}

Az ügyfél meglepődhet, hogy a luxusnak szánt szálloda a költségvetés kategóriájában van, és nincs légkondicionálója. Ha az ügyfél több szót is beír a keresésbe, az alkalmazás feltételezi, hogy az összes kifejezésnek szerepelnie kell az eredményekben, így a lekérdezéshez hozzáadja a +-t a kifejezések között. Az API-nak küldött lekérdezés a következő:

search=luxury + air con&$select=HotelId, HotelName, Category, Tags, Description&$count=true

A keresési szolgáltatás mostantól öt dokumentumot ad vissza, de a legjobb találatok továbbra is a költségvetés kategóriában találhatók.

A Lucene-lekérdezéselemző engedélyezése

A lekérdezési sztringhez hozzáadva &queryType=full megadhatja a keresőnek, hogy használja a Lucene Query-elemzőt.

search=luxury AND air con&$select=HotelId, HotelName, Category, Tags, Description&$count=true&queryType=full

A Lucene szintaxissal pontosabb lekérdezéseket írhat. Az alábbiakban összefoglaljuk az elérhető funkciókat:

  • Logikai operátorok: AND, ORpéldául NOTluxury AND 'air con'
  • Mezős keresés: fieldName:search term például Description:luxury AND Tags:air con
  • Homályos keresés: ~ például Description:luxury~ a luxus hibásan írt verzióival rendelkező találatokat ad vissza
  • Kifejezés közelségi keresés: "term1 term2"~n például "indoor swimming pool"~3 visszaadja a dokumentumokat a beltéri uszoda szavakkal három szó egymástól
  • Reguláris kifejezéskeresés: /regular expression/ használjon normál kifejezést például /[mh]otel/ a hotel és a motel dokumentumainak visszaadása között /
  • Helyettesítő karakterek keresése: *ahol ?* sok karakter fog egyezni, és ? egyetlen karakterrel egyezik, például 'air con'* légkondicionálást és légkondicionálást talál
  • Elsőbbségi csoportosítás: (term AND (term OR term)) például (Description:luxury OR Category:luxury) AND Tags:air?con*
  • Kifejezésnövelés: ^ például Description:luxury OR Category:luxury^3 a luxuskategóriájú szállodáknak magasabb pontszámot adna, mint a luxus a leírásban

A funkciókkal kapcsolatos további információkért tekintse meg az Azure AI Search Lucene-lekérdezési szintaxisát a dokumentumokban.

Keresési kifejezések kiemelése

A fentiekkel javíthatja az eredményeket. A elemzőnek magasabb prioritást kell biztosítania a luxuskategóriába tartozó szállodák számára. Pontosabban is kereshet légkondicionálót a Címkék mezőben.

(Description:luxury OR Category:luxury^3) AND Tags:'air con'*

Adja hozzá a lekérdezési sztring többi paraméterét:

search=(Description:luxury OR Category:luxury^3) AND Tags:'air con'*&$select=HotelId, HotelName, Category, Tags, Description&$count=true&queryType=full

Az első három szálloda most:

{
  "@odata.context": "https://advanced-cognitive-search.search.windows.net/indexes('hotels-sample-index')/$metadata#docs(*)",
  "@odata.count": 5,
  "value": [
    {
      "@search.score": 5.3537707,
      "HotelId": "8",
      "HotelName": "Sapphire Resort",
      "Description": "Downtown, close to everything, steps to the park, shopping, and restaurants.",
      "Category": "Luxury",
      "Tags": [
        "free wifi",
        "continental breakfast",
        "air conditioning"
      ]
    },
    {
      "@search.score": 5.3522806,
      "HotelId": "49",
      "HotelName": "Old Carrabelle Hotel",
      "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
      "Category": "Luxury",
      "Tags": [
        "air conditioning",
        "laundry service",
        "24-hour front desk service"
      ]
    },
    {
      "@search.score": 4.1448884,
      "HotelId": "18",
      "HotelName": "Oceanside Resort",
      "Description": "New Luxury Hotel.  Be the first to stay. Bay views from every room, location near the piper, rooftop pool, waterfront dining & more.",
      "Category": "Budget",
      "Tags": [
        "view",
        "laundry service",
        "air conditioning"
      ]
    },
    ...
  ]
}

A Sapphire Resorts keresési pontszáma 2,3321536-ról 5,3537707-re nőtt, és most az első szálloda, amelyet az ügyfél látni fog. Az Oceanside Resort most már a harmadik helyen áll.