Ricerca full-text in Azure Cosmos DB per NoSQL (anteprima)
Azure Cosmos DB per NoSQL offre ora una potente funzionalità di ricerca full-text in anteprima, progettata per migliorare le funzionalità di ricerca delle applicazioni.
Nota
La ricerca full-text e ibrida è in anteprima anticipata e potrebbe non essere disponibile in tutte le aree in questo momento.
Che cos'è la ricerca full-text?
Azure Cosmos DB per NoSQL offre ora una potente funzionalità di ricerca full-text in anteprima, progettata per migliorare le funzionalità di query sui dati. Questa funzionalità include tecniche avanzate di elaborazione del testo, ad esempio stemming, rimozione di parole non significative e tokenizzazione, consentendo ricerche di testo efficienti ed efficaci tramite un indice di testo specializzato. La ricerca full-text include anche l'assegnazione di punteggi full-text con una funzione che valuta la pertinenza dei documenti a una determinata query di ricerca. BM25 o Best Matching 25 considera fattori come la frequenza dei termini, la frequenza inversa del documento e la lunghezza del documento per assegnare punteggi e classificare i documenti. Ciò consente di garantire che i documenti più rilevanti vengano visualizzati nella parte superiore dei risultati della ricerca, migliorando l'accuratezza e l'utilità delle ricerche di testo.
La ricerca full-text è ideale per diversi scenari, tra cui:
- E-commerce: trovare rapidamente i prodotti in base a descrizioni, recensioni e altri attributi di testo.
- Gestione dei contenuti: ricerca efficiente tramite articoli, blog e documenti.
- Supporto tecnico: recuperare i ticket di supporto, le domande frequenti e gli articoli della Knowledge Base pertinenti.
- Contenuto utente: analizzare e cercare contenuti generati dall'utente, ad esempio post e commenti.
- RAG per chatbot: migliorare le risposte del chatbot recuperando informazioni rilevanti da corpora di testo di grandi dimensioni, migliorando l'accuratezza e la pertinenza delle risposte.
- App per intelligenza artificiale multi-agente: consente a più agenti di intelligenza artificiale di eseguire ricerche e analizzare in modo collaborativo grandi quantità di dati di testo, fornendo informazioni dettagliate complete e dettagliate.
Come usare la ricerca full-text
Nota
La ricerca full-text e ibrida (anteprima) potrebbe non essere disponibile in tutte le aree al momento.
- Abilitare la funzionalità di anteprima "Ricerca full-text e ibrida per NoSQL".
- Configurare un contenitore con criteri full-text e indice full-text.
- Inserire i dati con le proprietà di testo.
- Eseguire query ibride sui dati.
Abilitare la funzionalità di anteprima full-text e ricerca ibrida per NoSQL
La ricerca full-text, l'assegnazione dei punteggi full-text e la ricerca ibrida richiedono l'abilitazione della funzionalità di anteprima nell'account Azure Cosmos DB per NoSQL prima di usare. Per effettuare la registrazione, seguire questa procedura:
- Passare alla pagina della risorsa Azure Cosmos DB for NoSQL.
- Selezionare il riquadro "Funzionalità" nella voce di menu "Impostazioni".
- Selezionare la funzionalità "Full-Text & Hybrid Search for NoSQL API (anteprima)".
- Leggere la descrizione della funzionalità per confermare che si vuole abilitarla.
- Selezionare "Abilita" per attivare l'indicizzazione vettoriale e la funzionalità di ricerca.
Configurare criteri e indici dei contenitori per la ricerca ibrida
Per usare le funzionalità di ricerca full-text, è prima necessario definire due criteri:
- Criteri full-text a livello di contenitore che definiscono i percorsi che conterranno testo per le nuove funzioni di sistema di query full-text.
- Indice full-text aggiunto ai criteri di indicizzazione che consentono una ricerca efficiente.
Criteri full-text
Per ogni proprietà di testo che si vuole configurare per la ricerca full-text, è necessario dichiarare sia la path
proprietà della proprietà con il testo che il language
del testo. Un semplice criterio full-text può essere:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
La definizione di più percorsi di testo viene eseguita facilmente aggiungendo un altro elemento alla fullTextPolicy
matrice:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Nota
Inglese ("en-us" come lingua) è l'unica lingua supportata in questo momento.
Importante
I caratteri jolly (*, []) non sono attualmente supportati nei criteri full-text o nell'indice full-text.
Indice full-text
Tutte le operazioni di ricerca full-text devono usare un indice full-text. Un indice full-text può essere facilmente definito in qualsiasi criterio di indice di Azure Cosmos DB per NoSQL in base all'esempio seguente.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Analogamente ai criteri full-text, gli indici full-text possono essere definiti in più percorsi.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Query di ricerca full-text
Le operazioni di ricerca e assegnazione dei punteggi full-text vengono eseguite usando le funzioni di sistema seguenti nel linguaggio di query Di Azure Cosmos DB per NoSQL:
FullTextContains
: restituiscetrue
se una determinata stringa è contenuta nella proprietà specificata di un documento. Ciò è utile in unaWHERE
clausola quando si desidera assicurarsi che parole chiave specifiche siano incluse nei documenti restituiti dalla query.FullTextContainsAll
: restituiscetrue
se tutte le stringhe specificate sono contenute nella proprietà specificata di un documento. Ciò è utile in unaWHERE
clausola quando si vuole assicurarsi che più parole chiave siano incluse nei documenti restituiti dalla query.FullTextContainsAny
: restituiscetrue
se una delle stringhe specificate è contenuta nella proprietà specificata di un documento. Ciò è utile in unaWHERE
clausola quando si vuole assicurarsi che almeno una delle parole chiave sia inclusa nei documenti restituiti dalla query.FullTextScore
: restituisce un punteggio. Questa operazione può essere usata solo in unaORDER BY RANK
clausola, in cui i documenti restituiti vengono ordinati in base alla classificazione del punteggio full-text, con i documenti più rilevanti (con punteggio più alto) nella parte superiore e i documenti meno rilevanti (con punteggio più basso) nella parte inferiore.
Ecco alcuni esempi di ogni funzione in uso.
FullTextContains
In questo esempio si vogliono ottenere i primi 10 risultati in cui la parola chiave "bike" è contenuta nella proprietà c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
In questo esempio si vogliono ottenere i primi 10 risultati in cui le parole chiave "rosso" e "bicicletta" sono contenute nella proprietà c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
In questo esempio si vogliono ottenere i primi 10 risultati in cui le parole chiave "rosso" e "bicicletta" o "skateboard" sono contenute nella proprietà c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
In questo esempio si vogliono ottenere i primi 10 risultati in cui sono inclusi "mountain" e "bike" e ordinati in base all'ordine di pertinenza. Ovvero, i documenti con questi termini più spesso dovrebbero essere visualizzati più in alto nell'elenco.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Importante
FullTextScore può essere usato solo nella ORDER BY RANK
clausola e non proiettato nell'istruzione SELECT
o in una WHERE
clausola .