Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En av de viktigaste funktionerna som Azure DocumentDB tillhandahåller är textindexering, vilket möjliggör effektiv sökning och frågekörning av textbaserade data. Tjänsten implementerar textindex i version 2 . Version 2 stöder skiftlägeskänslighet men inte diakritisk känslighet.
Textindex i Azure DocumentDB är särskilda datastrukturer som optimerar textbaserade frågor, vilket gör dem snabbare och effektivare. De är utformade för att hantera textinnehåll som dokument, artiklar, kommentarer eller andra textintensiva data. Textindex använder tekniker som tokenisering, härstamning och stoppord för att skapa ett index som förbättrar prestandan för textbaserade sökningar.
Förutsättningar
En prenumeration på Azure
- Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto
Ett befintligt Azure DocumentDB-kluster
- Om du inte har något kluster skapar du ett nytt kluster
Definiera ett textindex
För enkelhetens skull bör vi överväga ett exempel på ett bloggprogram med följande konfiguration:
-
Databasnamn:
cosmicworks -
Samlingsnamn:
products
Det här exempelprogrammet lagrar artiklar som dokument med följande struktur:
{
"_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
}
createIndexAnvänd metoden medtextalternativet för att skapa ett textindex i fältettitle.use cosmicworks; db.products.createIndex({ title: "text" })Anmärkning
Du kan bara definiera ett textindex per samling, men med Azure DocumentDB kan du skapa textindex i flera fält så att du kan utföra textsökningar i olika fält i dina dokument.
Du kan också skapa ett index som stöder sökning på både fälten
titleochcontent.db.products.createIndex({ title: "text", content: "text" })
Konfigurera alternativ för textindex
Textindex i Azure DocumentDB har flera alternativ för att anpassa deras beteende. Du kan till exempel ange språket för textanalys, ange vikter för att prioritera vissa fält och konfigurera skiftlägesokänsliga sökningar. Här är ett exempel på hur du skapar ett textindex med alternativ:
Skapa ett index för att stödja sökning på både fälten
titleochcontentmed stöd för engelska. Tilldela också högre vikter tilltitlefältet för att prioritera det i sökresultaten.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Vikter i textindex
När du skapar ett textindex kan du tilldela olika vikter till enskilda fält i indexet. Dessa vikter representerar vikten eller relevansen för varje fält i sökningen. Azure DocumentDB beräknar en poäng och tilldelade vikter för varje dokument baserat på söktermer när du kör en textsökningsfråga. Poängen representerar dokumentets relevans för sökfrågan.
Skapa ett index som stöder sökning på både fälten
titleochcontent. Tilldela en vikt på 2 till fältet "rubrik" och en vikt på 1 till fältet "innehåll".db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Anmärkning
När en klient utför en textsökningsfråga med termen "DocumentDB" beräknas poängen för varje dokument i samlingen baserat på förekomsten och frekvensen för termen i både fälten "title" och "content", med högre prioritet för fältet "title" på grund av dess högre vikt.
Utföra en textsökning med hjälp av ett textindex
När textindexet har skapats kan du utföra textsökningar med hjälp av textoperatorn i dina frågor. Textoperatorn tar en söksträng och matchar den mot textindexet för att hitta relevanta dokument.
Utför en textsökning efter frasen
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Du kan också använda
$metaprojektionsoperatorn tillsammans med fältettextScorei en fråga för att se viktendb.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Ta bort ett textindex
Om du vill släppa ett textindex i MongoDB kan du använda dropIndex() metoden i samlingen och ange indexnyckeln eller namnet för det textindex som du vill ta bort.
Ta bort ett textindex genom att uttryckligen ange nyckeln.
db.products.dropIndex({ title: "text" })Du kan också ta bort ett textindex genom att ange det automatiskt genererade unika namnet.
db.products.dropIndex("title_text")
Begränsningar för textindex
- Endast ett textindex kan definieras i en samling.
- Hint() stöds inte i kombination med en fråga med $text uttryck.
- Sorteringsåtgärder kan inte använda ordningen på textindexet i MongoDB.
- Textindex kan vara relativt stora och förbrukar betydande lagringsutrymme jämfört med andra indextyper.