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.
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.
L'ultimo passaggio non prevede niente di diverso dagli altri data source e ci consente di impostare l'indexer e quando deve lavorare.
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.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare database e servizi con gli add-on di Container App
Reactive form tipizzati con modellazione del FormBuilder in Angular
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Controllare gli accessi IP alle app con Azure Container Apps
Eseguire attività basate su eventi con Azure Container Jobs
Usare una container image come runner di GitHub Actions
Utilizzare politiche di resiliency con Azure Container App
Potenziare Azure AI Search con la ricerca vettoriale
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Usare il versioning con i controller di ASP.NET Core Web API
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Assegnare un valore di default a un parametro di una lambda in C#