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
Gestire liste di tipi semplici con Entity Framework Core
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Potenziare Azure AI Search con la ricerca vettoriale
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Aggiungere interattività lato server in Blazor 8
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Semplificare il deployment di siti statici con Azure Static Web App
Inizializzare i container in Azure Container Apps
Sottoscrizione agli eventi sul contenitore in JavaScript
Hosting di componenti WebAssembly in un'applicazione Blazor static
Utilizzare database e servizi con gli add-on di Container App