Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'indicizzazione full-text e la ricerca in Cosmos DB (in Azure e Fabric) migliora le funzionalità di ricerca nativa dell'app senza richiedere un servizio di ricerca esterno. Questa funzionalità usa tecniche avanzate di elaborazione del testo, ad esempio stemming, rimozione di parole non significative e tokenizzazione per consentire ricerche di testo efficienti tramite un indice specializzato.
Che cos'è la ricerca full-text?
Cosmos DB offre indicizzazione e ricerca full-text, progettata per migliorare i carichi di lavoro di ricerca e recupero. Questa funzionalità include tecniche avanzate di elaborazione del testo, come 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 per 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. In questo modo si garantisce 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: per trovare rapidamente i prodotti in base a descrizioni, recensioni e altri attributi di testo.
Gestione dei contenuti: per eseguire ricerche efficienti in articoli, blog e documenti.
Assistenza clienti: per recuperare ticket di supporto, domande frequenti e articoli della Knowledge Base pertinenti.
Contenuti di utenti: per analizzare e cercare contenuti generati dagli utenti, come post e commenti.
RAG per chatbot: per migliorare le risposte dei chatbot recuperando informazioni rilevanti da corpora di testo di grandi dimensioni, in modo da migliorare l'accuratezza e la pertinenza delle risposte.
App di intelligenza artificiale multi-agente: per consentire a più agenti di intelligenza artificiale di eseguire ricerche e analizzare in modo collaborativo grandi quantità di dati di testo, fornendo approfondimenti completi e dettagliati.
Come usare la ricerca full-text
Configurare un contenitore con un criterio full-text e un indice full-text.
Inserire i dati con le proprietà di testo.
Eseguire query sui dati usando funzioni di sistema di ricerca full-text.
Configurare criteri e indici dei contenitori per la ricerca ibrida
Per usare le funzionalità di ricerca full-text, è necessario innanzitutto definire due criteri:
Un criterio full-text a livello di contenitore che definisce i percorsi che conterranno il testo per le nuove funzioni del sistema di query full-text.
Un indice full-text in aggiunta ai criteri di indicizzazione per consentire una ricerca efficiente.
È possibile eseguire query di ricerca full-text senza questi criteri, ma non usano l'indice full-text e potrebbero consumare più request units (RU). Senza questo criterio, anche le ricerche full-text possono richiedere più tempo per l'esecuzione. È raccomandato definire criteri per i contenitori e gli indici del full-text.
Criteri full-text
Per ogni proprietà di testo che si vuole configurare per la ricerca full-text, è necessario dichiarare sia l'oggetto path della proprietà con il testo che l'oggetto 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 matrice fullTextPolicy:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Importante
I caratteri jolly (*, []) non sono attualmente supportati nei criteri di testo completo o nell'indice di testo completo.
Per altre informazioni ed esempi di impostazioni di un criterio full-text, vedere esempi di criteri di indicizzazione full-text.
Supporto multilingue
Il supporto multilingue consente di indicizzare e cercare testo in lingue diverse dall'inglese. Per ottenere risultati di ricerca più accurati, applica processi di tokenizzazione, stemming e rimozione delle parole non significative specifici della lingua.
Annotazioni
Il supporto multilingue è disponibile in anteprima anticipata. Le prestazioni e la qualità della ricerca potrebbero essere diverse dalla ricerca full-text in inglese. Ad esempio, la rimozione delle stopword è disponibile solo per l'inglese (en-us) al momento. La funzionalità è soggetta a modifiche nell'evoluzione dell'anteprima.
Sono supportate le lingue seguenti:
| Lingua | Codice | Rimozione di parole non significative |
|---|---|---|
| English | en-US |
Sì |
| Tedesco (anteprima) | de-DE |
No |
| Francese (anteprima) | fr-FR |
No |
| Italiano (anteprima) | it-IT |
No |
| Portoghese - Brasile (anteprima) | pt-BR |
No |
| Portoghese - Portogallo (anteprima) | pt-PT |
No |
| Spagnolo (anteprima) | es-ES |
No |
I codici di lingua fanno distinzione tra maiuscole e minuscole (ad esempio, en-US non en-us).
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 Cosmos DB in base all'esempio seguente:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Come per i 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:
FULLTEXTCONTAINS: restituiscetruese una stringa data è contenuta nella proprietà specificata di un documento. Questa funzione è utile in unaWHEREclausola quando si desidera assicurarsi che parole chiave specifiche siano incluse nei documenti restituiti dalla query.FULLTEXTCONTAINSALL: restituiscetruese tutte le stringhe date sono contenute nella proprietà specificata di un documento. Questa funzione è utile in unaWHEREclausola quando si desidera assicurarsi che più parole chiave siano incluse nei documenti restituiti dalla query.FULLTEXTCONTAINSANY: restituiscetruese una delle stringhe date è contenuta nella proprietà specificata di un documento. Questa funzione è utile in unaWHEREclausola quando si vuole assicurarsi che almeno una delle parole chiave sia inclusa nei documenti restituiti dalla query.FULLTEXTSCORE: usare questa funzione in unaORDER BY RANKclausola per restituire i documenti ordinati in base al punteggio full-text, inserendo i documenti più rilevanti (con punteggio più alto) nella parte superiore e il meno rilevante (punteggio più basso) nella parte inferiore.
Di seguito sono riportati alcuni esempi di ogni funzione in uso.
FULLTEXTCONTAINS
In questo esempio si vogliono ottenere i primi 10 risultati in cui la frase "bicicletta rossa" è contenuta nella proprietà c.text.
SELECT TOP 10
*
FROM
container c
WHERE
FULLTEXTCONTAINS(c.text, "red 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, ma non necessariamente insieme.
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
container c
WHERE
FULLTEXTCONTAINS(c.text, "red") AND
FULLTEXTCONTAINSANY(c.text, "bicycle", "skateboard")
FULLTEXTSCORE
In questo esempio si vogliono ottenere i primi 10 risultati che contengono le parole "montagna" e "bicicletta", in ordine di pertinenza. In altre parole, i documenti con questi termini vengono normalmente visualizzati più in alto nell'elenco.
SELECT TOP 10
*
FROM
container c
ORDER BY RANK
FULLTEXTSCORE(c.text, "bicycle", "mountain")
Importante
FULLTEXTSCORE può essere utilizzato solo nella ORDER BY RANK clausola e non proiettato nell'istruzione SELECT o in una WHERE clausola .
Ricerca fuzzy
La ricerca fuzzy può migliorare la resilienza agli errori di digitazioni e alle variazioni del testo. È possibile specificare una "distanza" consentita (numero di modifiche) tra il termine di ricerca e il testo del documento, permettendo di considerare le corrispondenze approssimative come valide. La distanza massima che può essere specificata è 2 (due modifiche).
Annotazioni
La ricerca fuzzy è un'anteprima. Le prestazioni, la qualità e le funzionalità sono soggette a modifiche nell'evoluzione dell'anteprima.
SELECT TOP 10
*
FROM
container c
WHERE
FULLTEXTCONTAINS(c.text, {"term": "red", "distance":1}, {"term": "bicycle", "distance":2})