Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure DocumentDB egyik fő funkciója a szövegindexelés, amely lehetővé teszi a szövegalapú adatok hatékony keresését és lekérdezését. A szolgáltatás a 2. verziójú szöveges indexeket implementálja. A 2. verzió támogatja a kis- és nagybetűk érzékenységét, de a diakritikus érzékenységet nem.
Az Azure DocumentDB szöveges indexei olyan speciális adatstruktúrák, amelyek optimalizálják a szövegalapú lekérdezéseket, így gyorsabbak és hatékonyabbak. Olyan szöveges tartalmak kezelésére lettek kialakítva, mint a dokumentumok, cikkek, megjegyzések vagy bármilyen más szöveges jellegű adat. A szöveges indexek olyan technikákat használnak, mint a tokenizálás, a lesüllyedés és a szavak leállítása egy olyan index létrehozásához, amely javítja a szövegalapú keresések teljesítményét.
Előfeltételek
Azure-előfizetés
- Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot
Meglévő Azure DocumentDB-fürt
- Ha nincs klasztere, hozzon létre egy új klasztert
Szövegindex definiálása
Az egyszerűség kedvéért vegyünk egy példát egy blogalkalmazásra az alábbi beállítással:
-
Adatbázis neve:
cosmicworks -
Gyűjtemény neve:
products
Ez a példaalkalmazás dokumentumként tárolja a cikkeket a következő struktúrával:
{
"_id": ObjectId("617a34e7a867530bff1b2346"),
"title": "Azure DocumentDB - A Game Changer",
"content": "Azure DocumentDB is a globally distributed, multi-model database service.",
"author": "John Doe",
"category": "Technology",
"published": true
}
Használja a
createIndexmetódust atextopcióval, hogy szövegindexet hozzon létre atitlemezőn.use cosmicworks; db.products.createIndex({ title: "text" })Megjegyzés:
Bár gyűjteményenként csak egy szöveges indexet definiálhat, az Azure DocumentDB lehetővé teszi szövegindexek létrehozását több mezőn, hogy lehetővé tegye a dokumentumok különböző mezőiben végzett szöveges kereséseket.
Ha szükséges, hozzon létre egy indexet, amely támogatja a keresést mind a
title, mind acontentmezőkben.db.products.createIndex({ title: "text", content: "text" })
Szövegindex beállításainak konfigurálása
Az Azure DocumentDB szöveges indexei számos lehetőséget kínálnak a viselkedésük testreszabására. Megadhatja például a szövegelemzés nyelvét, beállíthatja a súlyokat bizonyos mezők rangsorolásához, és konfigurálhatja a kis- és nagybetűket nem érzékelyítő kereséseket. Íme egy példa egy szövegindex beállításokkal való létrehozására:
Hozzon létre egy indexet, amely támogatja a keresést az
titleéscontentmezőkön, angol nyelvű kereséstámogatással. Emellett rendeljen nagyobb súlyokat atitlemezőhöz, hogy rangsorolja azt a keresési eredményekben.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Súlyok szövegindexekben
Szövegindex létrehozásakor különböző súlyokat rendelhet hozzá az index egyes mezőihez. Ezek a súlyok a keresés egyes mezőinek fontosságát vagy relevanciáját jelölik. Az Azure DocumentDB egy szöveges keresési lekérdezés végrehajtásakor a keresési kifejezések alapján kiszámítja az egyes dokumentumok pontszámát és hozzárendelt súlyait. A pontszám a dokumentum keresési lekérdezéshez való relevanciáját jelöli.
Hozzon létre egy indexet, amely támogatja a keresést a
titleéscontentmezőkben. Rendeljen 2-es súlyt a "cím" mezőhöz, és 1-es súlyt a "tartalom" mezőhöz.db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Megjegyzés:
Ha egy ügyfél szöveges keresési lekérdezést végez a "DocumentDB" kifejezéssel, a rendszer a gyűjtemény minden dokumentumának pontszámát a kifejezés jelenléti és gyakorisági gyakorisága alapján számítja ki a "title" és a "content" mezőkben, és a nagyobb súly miatt a "cím" mező nagyobb jelentőséggel bír.
Szövegkeresés végrehajtása szövegindex használatával
A szövegindex létrehozása után a lekérdezésekben a "text" operátorral végezhet szöveges keresést. A szövegoperátor egy keresési karakterláncot vesz alapul, és a szövegindex alapján releváns dokumentumokat keres ki.
Szövegkeresés végrehajtása a kifejezésre
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Ha szeretné, a lekérdezésben szereplő mezővel együtt használja a
$metatextScorevetítési operátort a súly megjelenítéséhezdb.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Szövegindex elvetése
Ha el szeretne helyezni egy szöveges indexet a MongoDB-ben, használhatja a dropIndex() gyűjtemény metódusát, és megadhatja az eltávolítani kívánt szövegindex indexkulcsát vagy nevét.
Szövegindex elvetése a kulcs explicit megadásával.
db.products.dropIndex({ title: "text" })Ha szeretné, elvethet egy szövegindexet az automatikusan létrehozott egyedi név megadásával.
db.products.dropIndex("title_text")
Szövegindex korlátozásai
- Egy gyűjteményben csak egy szöveges index definiálható.
- A Hint() nem támogatott olyan lekérdezésekkel, amelyek $text kifejezést használnak.
- A rendezési műveletek nem használhatják a szöveges index sorrendjét a MongoDB-ben.
- A szövegindexek viszonylag nagy méretűek lehetnek, és jelentős tárterületet foglalnak el más indextípusokhoz képest.