Azure Cosmos DB è un servizio di database distribuito a livello globale offerto da Microsoft, progettato per garantire scalabilità elevata e bassa latenza. Supporta diversi modelli di dati, tra cui documenti, grafi e chiavi-valori, permettendo agli sviluppatori di scegliere l'approccio più adatto alle loro applicazioni. Grazie alla sua architettura multi-master e al supporto per replicazione automatica dei dati, offre disponibilità continua e prestazioni ottimizzate in tutto il mondo.
Uno degli aspetti più interessanti di Cosmos DB è la capacità di indicizzare automaticamente tutto il contenuto dei documenti, permettendo di effettuare ricerche puntuali e altamente performanti su qualsiasi campo del documento, senza dover definire indici manualmente. Tuttavia, questa indicizzazione automatica è ottimizzata per ricerche di tipo strutturato, mentre non è ideale per ricerche testuali avanzate che richiedono elaborazioni più complesse come la tokenizzazione o il calcolo della rilevanza.
Per risolvere questa limitazione, Azure Cosmos DB per NoSQL ha introdotto una nuova funzionalità di Full Text Search, attualmente in preview, pensata per potenziare la capacità di ricerca nei dati. Questo strumento offre funzionalità avanzate di elaborazione testuale, come la tokenizzazione, la rimozione di parole comuni e lo stemming, rendendo le ricerche più efficienti grazie a un indice testuale specializzato.
La funzione di ricerca testuale integra un meccanismo di scoring basato sull?algoritmo BM25, che valuta la pertinenza dei documenti rispetto a una query. Questo approccio è ideale per scenari come e-commerce, gestione dei contenuti, supporto clienti e applicazioni AI multi-agente.
Per abilitare la Full Text Search è necessario seguire alcuni passaggi. Prima di tutto, occorre registrare la funzionalità abilitando l?opzione nell?interfaccia di Azure Cosmos DB. Successivamente, è necessario configurare una politica di full text a livello di container, specificando i percorsi dei campi testuali e la lingua, come nell'immagine.

Una volta definita la politica, occorre aggiornare la configurazione dell?indice aggiungendo un fullTextIndex ai percorsi desiderati. Questo permette di eseguire query ibride che combinano la ricerca testuale con altri filtri come mostrato nell'esempio seguente per il campo text.
"fullTextIndexes": [
{
"path": "/text"
}
]Per ottenere i primi 10 documenti contenenti la parola ?wifi? nel campo text, si possono utilizzare alcune funzioni di ricerca:
- FullTextContains: verifica se una stringa è contenuta in un campo testuale specifico;
- FullTextContainsAll: verifica se tutte le stringhe specificate sono presenti;
- FullTextContainsAny: restituisce true se almeno una delle stringhe è contenuta;
- FullTextScore: ordina i risultati per pertinenza.
Di seguito un esempio di query.
SELECT TOP 10 * FROM c WHERE FullTextContains(c.text, "wifi")
Questa nuova funzionalità rende Azure Cosmos DB una piattaforma ancora più potente per gestire grandi volumi di dati testuali, offrendo prestazioni elevate e maggiore precisione nelle ricerche. Al momento, il supporto è limitato alla lingua inglese, con il codice "en-US" come unica opzione disponibile per la configurazione della lingua.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Importare repository da Bitbucket a GitHub Enterprise Cloud
Il nuovo persistent state in Blazor
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Integrare OpenTelemetry direttamente in Azure Monitor
Utilizzare AbortController per cancellare operazioni asincrone in JavaScript
Come automatizzare il download dei report di billing da GitHub Enterprise
Bloccare il traffico di rete in uscita dal runner di GitHub
Shadow DOM open e closed sulla gestione delle pagine
Permettere a un LLM di invocare funzioni con Microsoft.Extensions.AI
Azure SQL Database per dev: tutte le novità da non perdere
Ottimizzare i costi con Smart tier in Azure Blob Storage
Ottimizzare gli indici con Automatic Index Compaction in Azure SQL Database
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti con namespace con LINQ e XDocument
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE


