Cercare del testo con Azure Cosmos DB SQL

di Cristian Civera, in Azure Cosmos DB,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi