A dokumentum rangsorolásának javítása a kifejezések kiemelésével
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.
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
,OR
példáulNOT
luxury AND 'air con'
- Mezős keresés:
fieldName:search term
példáulDescription:luxury AND Tags:air con
- Homályos keresés:
~
példáulDescription: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áulDescription: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.