Azure Search è il servizio della piattaforma cloud di Microsoft che ci permette di indicizzare contenuti testuali e poterli ricercare con tutti i vantaggi di un motore full-text, come la comprensione della lingua, la gestione degli errori di battitura e il suggerimento in compilazione.
Tra i numerosi connettori, cioè i motori in grado di alimentare Azure Search, troviamo anche il supporto a Cosmos DB. Come sempre dobbiamo creare il data source, l'index e l'indexer, partendo dall'istanza di Search oppure da Cosmos DB dove troviamo una sezione dedicata. Il primo passo richiede di selezionare l'istanza di Search da alimentare, mentre il secondo è dedicato alla definizione della sorgente.
In questa parte è importante estrapolare solo i dati necessari da essere indicizzati, per tenere più leggero ed efficiente possibile l'indice, oltre che a limitare i costi. Selezionato il database e il container, quindi, dobbiamo specificare la query (con SQL API attualmente) facendo attenzione ad estrapolare valori primitivi o array, ma non oggetti.
![](https://www.cloudnativeitalia.com/script/images/194.jpg)
Possiamo notare l'uso di un filtro c._ts >= @HighWaterMark e relativo ordinamento per facilitare l'indexer nel compito. Grazie a quel campo sa estrapolare solo gli item effettivamente cambiati o aggiungi e ottimizzare il lavoro.
Al passaggio successivo, grazie alla query specificata, possiamo trovare già popolati i campi e specificare l'analyzer specifico per ogni lingua.
![](https://www.cloudnativeitalia.com/script/images/194_2.jpg)
L'ultimo passaggio non prevede niente di diverso dagli altri data source e ci consente di impostare l'indexer e quando deve lavorare.
![](https://www.cloudnativeitalia.com/script/images/194_3.jpg)
Il motore è in grado anche di monitorare gli elementi cancellati ma per farlo è necessario implementare il soft delete, cioè indicare il nome di un campo e il valore che deve assumere, invece che rimuovere l'elemento dal container.
![](https://www.cloudnativeitalia.com/script/images/194_4.jpg)
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Limitare le richieste lato server con l'interactive routing di Blazor 8
Eseguire script pre e post esecuzione di un workflow di GitHub
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Ottenere un token di accesso per una GitHub App
Selettore CSS :has() e i suoi casi d'uso avanzati
Disabilitare automaticamente un workflow di GitHub
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Migliorare la sicurezza dei prompt con Azure AI Studio
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Gestire i dati con Azure Cosmos DB Data Explorer