Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een van de belangrijkste functies die Azure DocumentDB biedt, is tekstindexering, waarmee u efficiënt kunt zoeken en query's kunt uitvoeren op gegevens op basis van tekst. De service implementeert tekstindexen van versie 2 . Versie 2 ondersteunt hoofdlettergevoeligheid, maar niet diakritische gevoeligheid.
Tekstindexen in Azure DocumentDB zijn speciale gegevensstructuren die op tekst gebaseerde query's optimaliseren, waardoor ze sneller en efficiënter worden. Ze zijn ontworpen voor het verwerken van tekstuele inhoud, zoals documenten, artikelen, opmerkingen of andere gegevens met veel tekst. Tekstindexen gebruiken technieken zoals tokenisatie, stemming en stopwoorden om een index te maken die de prestaties van zoekopdrachten op basis van tekst verbetert.
Vereiste voorwaarden
Een Azure-abonnement
- Als u geen Azure-abonnement hebt, maakt u een gratis account
Een bestaand Azure DocumentDB-cluster
- Als u geen cluster hebt, maakt u een nieuw cluster
Een tekstindex definiëren
Laten we voor het gemak een voorbeeld van een blogtoepassing overwegen met de volgende instellingen:
-
Databasenaam:
cosmicworks -
Naam van verzameling:
products
In deze voorbeeldtoepassing worden artikelen opgeslagen als documenten met de volgende structuur:
{
"_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
}
Gebruik de
createIndexmethode met detextoptie om een tekstindex in hettitleveld te maken.use cosmicworks; db.products.createIndex({ title: "text" })Opmerking
Hoewel u slechts één tekstindex per verzameling kunt definiëren, kunt u met Azure DocumentDB tekstindexen maken op meerdere velden, zodat u tekstzoekopdrachten kunt uitvoeren in verschillende velden in uw documenten.
Maak desgewenst een index ter ondersteuning van zoeken op zowel de
title- als decontent-velden.db.products.createIndex({ title: "text", content: "text" })
Opties voor tekstindex configureren
Tekstindexen in Azure DocumentDB worden geleverd met verschillende opties om hun gedrag aan te passen. U kunt bijvoorbeeld de taal voor tekstanalyse opgeven, gewichten instellen om prioriteit te geven aan bepaalde velden en hoofdlettergevoelige zoekopdrachten configureren. Hier volgt een voorbeeld van het maken van een tekstindex met opties:
Maak een index ter ondersteuning van zoeken op zowel de
titleals decontentvelden, met ondersteuning voor de Engelse taal. Wijs ook hogere gewichten toe aan het veld om prioriteit te geven aan hettitleveld in zoekresultaten.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Gewichten in tekstindexen
Wanneer u een tekstindex maakt, kunt u verschillende gewichten toewijzen aan afzonderlijke velden in de index. Deze gewichten vertegenwoordigen het belang of de relevantie van elk veld in de zoekopdracht. Azure DocumentDB berekent een score en toegewezen gewichten voor elk document op basis van de zoektermen bij het uitvoeren van een zoekquery voor tekst. De score vertegenwoordigt de relevantie van het document voor de zoekquery.
Maak een index ter ondersteuning van zoeken op zowel de
titleals decontentvelden. Wijs een gewicht van 2 toe aan het veld 'titel' en een gewicht van 1 aan het veld 'inhoud'.db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Opmerking
Wanneer een client een zoekquery voor tekst uitvoert met de term 'DocumentDB', wordt de score voor elk document in de verzameling berekend op basis van de aanwezigheid en frequentie van de term in zowel de velden 'titel' als 'inhoud', met een hogere urgentie voor het veld 'titel' vanwege het hogere gewicht.
Een tekstzoekopdracht uitvoeren met behulp van een tekstindex
Zodra de tekstindex is gemaakt, kunt u tekstzoekopdrachten uitvoeren met behulp van de operator 'tekst' in uw query's. De tekstoperator gebruikt een zoektekenreeks en zoekt in de tekstindex om relevante documenten te vinden.
Voer een tekstzoekopdracht uit voor de woordgroep
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Gebruik eventueel de
$metaprojectieoperator samen met hettextScoreveld in een query om het gewicht te ziendb.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Een tekstindex verwijderen
Als u een tekstindex in MongoDB wilt verwijderen, kunt u de dropIndex() methode in de verzameling gebruiken en de indexsleutel of naam opgeven voor de tekstindex die u wilt verwijderen.
Verwijder een tekstindex door expliciet de sleutel op te geven.
db.products.dropIndex({ title: "text" })U kunt desgewenst een tekstindex verwijderen door de automatisch gegenereerde unieke naam op te geven.
db.products.dropIndex("title_text")
Beperkingen voor tekstindex
- Er kan slechts één tekstindex worden gedefinieerd voor een verzameling.
- Hint() wordt niet ondersteund in combinatie met een query met behulp van $text expressie.
- Sorteerbewerkingen kunnen de volgorde van de tekstindex in MongoDB niet gebruiken.
- Tekstindexen kunnen relatief groot zijn en aanzienlijke opslagruimte verbruiken in vergelijking met andere indextypen.