Azure Cosmos DB è il servizio di Microsoft che fornisce un database documentale e non solo, il tutto interamente gestito e altamente scalabile.
Quando carichiamo i documenti, se non diversamente indicato, essi vengono interamente indicizzati e questo ci permette di cercare in base ad ogni informazione che essi contengono in maniera puntuale e molto veloce, supportando anche di diversi GB di informazioni per partizione.
Anche la ricerca del testo è ovviamente consentita, ma per farlo sono disponibili funzioni diverse a seconda del modo in cui vogliamo cercare. L'operatore di uguaglianza ci permette di cercare la stringa esatta e la ricerca è case-sensitive. In questo script vogliamo invece vedere altre forme di ricerca:
-- Ricerca case sensitive SELECT * FROM Products WHERE Name = 'Prodotto 1' -- Ricerca case insensitive SELECT * FROM Products WHERE StringEquals(Name, 'prodotto 1', true) -- Inizia per case insensitive SELECT * FROM Products WHERE StartsWith(Name, 'prod', true) -- Contiene case insensitive SELECT * FROM Products WHERE Contains(Name, 'dotto', true) -- Finisce per case sensitive SELECT * FROM Products WHERE StartsWith(Name, '1') -- Ricerca con Regex SELECT * FROM Products WHERE RegexMatch(Name, '\w+\s\d+') -- Ricerca con Like case sensitive SELECT * FROM Products WHERE Name Like 'P%o 1'
Come possiamo vedere, le varie funzioni ci permettono di cercare in maniera case sensitive o insensitive. La nuova parola chiave LIKE ci permette di fare ricerca in modo molto simile alla corrispondente chiave sui database relazionali, usando % (percentuale) e _ (underscore).
Da un punto di vista delle prestazioni, cercare una stringa esatta è più veloce e richiede meno RUs. Anche la ricerca case sensitive è sensibilmente migliore rispetto a quella case insensitive. EndsWith e Contains sono più onerose rispetto a StartsWith e a StringEquals. RegexMatch e Like, invece, sono le più onerose ma non vi sono differenze prestazionali tra di loro.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il trigger SQL con le Azure Function
Potenziare la ricerca su Cosmos DB con Full Text Search
Sostituire la GitHub Action di login su private registry
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Scrivere selettori CSS più semplici ed efficienti con :is()
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Escludere alcuni file da GitHub Secret Scanning
Effettuare il binding di date in Blazor
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Assegnare un valore di default a un parametro di una lambda in C#
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API