Fulltextsökning i Azure Cosmos DB för NoSQL (förhandsversion)
Azure Cosmos DB for NoSQL erbjuder nu en kraftfull fulltextsökningsfunktion i förhandsversionen, utformad för att förbättra sökfunktionerna i dina program.
Kommentar
Fulltext- och hybridsökning är i tidig förhandsversion och kanske inte är tillgängligt i alla regioner just nu.
Vad är fulltextsökning?
Azure Cosmos DB for NoSQL erbjuder nu en kraftfull funktion för fulltextsökning i förhandsversionen, utformad för att förbättra dina funktioner för datafrågor. Den här funktionen innehåller avancerade textbearbetningstekniker som att härstama, stoppa ordborttagning och tokenisering, vilket möjliggör effektiva och effektiva textsökningar via ett specialiserat textindex. Fulltextsökning innehåller också fulltextbedömning med en funktion som utvärderar dokuments relevans för en viss sökfråga. BM25, eller Bästa matchning 25, tar hänsyn till faktorer som termfrekvens, omvänd dokumentfrekvens och dokumentlängd för att poängsätta och rangordna dokument. Detta hjälper till att säkerställa att de mest relevanta dokumenten visas överst i sökresultaten, vilket förbättrar noggrannheten och användbarheten för textsökningar.
Fulltextsökning är perfekt för en mängd olika scenarier, bland annat:
- E-handel: Hitta snabbt produkter baserat på beskrivningar, recensioner och andra textattribut.
- Innehållshantering: Sök effektivt igenom artiklar, bloggar och dokument.
- Kundsupport: Hämta relevanta supportärenden, vanliga frågor och svar och kunskapsbas artiklar.
- Användarinnehåll: Analysera och söka igenom användargenererat innehåll, till exempel inlägg och kommentarer.
- RAG för chattrobotar: Förbättra chatbot-svar genom att hämta relevant information från stora text corpora, vilket förbättrar noggrannheten och relevansen av svar.
- AI-appar med flera agenter: Gör det möjligt för flera AI-agenter att samarbeta för att söka efter och analysera stora mängder textdata, vilket ger omfattande och nyanserade insikter.
Så här använder du fulltextsökning
Kommentar
Fulltext- och hybridsökning (förhandsversion) kanske inte är tillgängligt i alla regioner just nu.
- Aktivera förhandsgranskningsfunktionen "Fullständig text och hybridsökning efter NoSQL".
- Konfigurera en container med en fulltextprincip och fulltextindex.
- Infoga dina data med textegenskaper.
- Kör hybridfrågor mot data.
Aktivera fullständig text- och hybridsökning för noSQL-förhandsversionen
Fulltextsökning, fulltextbedömning och hybridsökning kräver alla aktivering av förhandsgranskningsfunktionen på ditt Azure Cosmos DB för NoSQL-konto innan du använder. Följ stegen nedan för att registrera dig:
- Gå till resurssidan för Azure Cosmos DB for NoSQL.
- Välj fönstret "Funktioner" under menyalternativet "Inställningar".
- Välj funktionen "Fulltext- och hybridsökning efter NoSQL API (förhandsversion)."
- Läs beskrivningen av funktionen för att bekräfta att du vill aktivera den.
- Välj "Aktivera" för att aktivera vektorindexerings- och sökfunktionen.
Konfigurera containerprinciper och index för hybridsökning
Om du vill använda funktioner för fulltextsökning måste du först definiera två principer:
- En fulltextprincip på containernivå som definierar vilka sökvägar som ska innehålla text för de nya fulltextfrågesystemfunktionerna.
- Ett fulltextindex har lagts till i indexeringsprincipen som möjliggör effektiv sökning.
Fulltextprincip
För varje textegenskap som du vill konfigurera för fulltextsökning måste du deklarera både path
egenskapen med text och language
texten. En enkel fulltextprincip kan vara:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Det är enkelt att definiera flera textsökvägar genom att lägga till ett annat element i matrisen fullTextPolicy
:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Kommentar
Engelska ("en-us" som språk) är det enda språk som stöds just nu.
Viktigt!
Jokertecken (*, []) stöds för närvarande inte i fulltextprincipen eller fulltextindexet.
Fulltextindex
Alla fulltextsökningsåtgärder bör använda ett fulltextindex. Ett fulltextindex kan enkelt definieras i valfri Azure Cosmos DB för NoSQL-indexprincip i exemplet nedan.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Precis som med fulltextprinciperna kan fulltextindex definieras på flera sökvägar.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Fulltextsökningsfrågor
Fulltextsöknings- och bedömningsåtgärder utförs med hjälp av följande systemfunktioner i frågespråket Azure Cosmos DB for NoSQL:
FullTextContains
: Returnerartrue
om en viss sträng finns i den angivna egenskapen för ett dokument. Detta är användbart i enWHERE
sats när du vill se till att specifika nyckelord ingår i de dokument som returneras av din fråga.FullTextContainsAll
: Returnerartrue
om alla angivna strängar finns i den angivna egenskapen för ett dokument. Detta är användbart i enWHERE
sats när du vill se till att flera nyckelord ingår i de dokument som returneras av din fråga.FullTextContainsAny
: Returnerartrue
om någon av de angivna strängarna finns i den angivna egenskapen för ett dokument. Detta är användbart i enWHERE
sats när du vill se till att minst ett av nyckelorden ingår i dokumenten som returneras av din fråga.FullTextScore
: Returnerar en poäng. Detta kan bara användas i enORDER BY RANK
sats, där de returnerade dokumenten sorteras efter rangordningen för den fullständiga textpoängen, med de mest relevanta dokumenten (högsta poäng) högst upp och minst relevanta dokument (lägsta poäng) längst ned.
Här är några exempel på varje funktion som används.
FullTextContains
I det här exemplet vill vi få de första 10 resultaten där nyckelordet "cykel" finns i egenskapen c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
I det här exemplet vill vi få de första 10 resultaten där nyckelorden "röd" och "cykel" finns i egenskapen c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
I det här exemplet vill vi få de första 10 resultaten där nyckelorden "röd" och antingen "cykel" eller "skateboard" finns i egenskapen c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
I det här exemplet vill vi få de första 10 resultaten där "mountain" och "bicycle" ingår och sorteras efter relevansordning. Det vill: dokument som har dessa termer oftare bör visas högre upp i listan.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Viktigt!
FullTextScore kan endast användas i ORDER BY RANK
-satsen och inte projiceras i -instruktionen SELECT
eller i en WHERE
-sats.