Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Cosmos DB for NoSQL teď nabízí výkonnou funkci fulltextového vyhledávání. Tato funkce je navržená tak, aby vylepšla nativní možnosti vyhledávání vašich aplikací bez nutnosti externí vyhledávací služby pro základní fulltextové vyhledávání.
Co je fulltextové vyhledávání?
Fulltextové indexování a vyhledávání zahrnuje pokročilé techniky zpracování textu, jako je lematizace, odstranění běžných slov a tokenizace, umožňující efektivní a účinné vyhledávání textu prostřednictvím specializovaného textového indexu. Fulltextové vyhledávání také zahrnuje fulltextové bodování pomocí funkce, která vyhodnocuje význam dokumentů pro daný vyhledávací dotaz. BM25, nebo Best Matching 25, zohledňuje faktory, jako je frekvence termínů, inverzní frekvence dokumentů a délka dokumentu pro hodnocení a seřazení dokumentů. To pomáhá zajistit, aby se v horní části výsledků hledání zobrazovaly nejrelevantní dokumenty, což zlepšuje přesnost a užitečnost hledání textu.
Fulltextové vyhledávání je ideální pro různé scénáře, mezi které patří:
- Elektronické obchodování: Umožňuje rychle najít produkty na základě popisu, recenzí a dalších atributů textu.
- Správa obsahu: Efektivně prohledávat články, blogy a dokumenty.
- Zákaznická podpora: Načtěte relevantní lístky podpory, nejčastější dotazy a články o znalostní báze.
- Uživatelský obsah: Analyzujte a prohledávejte obsah vygenerovaný uživatelem, jako jsou příspěvky a komentáře.
- RAG pro chatboty: Vylepšete odpovědi chatovacího robota načtením relevantních informací z velkých textových korporů, zlepšením přesnosti a relevance odpovědí.
- Aplikace AI s více agenty: Umožňuje více agentům umělé inteligence spolupracovat na hledání a analýze velkých objemů textových dat, což poskytuje komplexní a nuanční přehledy.
Jak používat fulltextové vyhledávání
- Nakonfigurujte kontejner s fulltextovou zásadou a fulltextovým indexem.
- Vložte data s atributy textu.
- Spouštění dotazů na data pomocí funkcí systému fulltextového vyhledávání
Konfigurace zásad kontejneru a indexů pro hybridní vyhledávání
Pokud chcete používat funkce fulltextového vyhledávání, měli byste nejprve definovat dvě zásady:
- Zásady fulltextového vyhledávání na úrovni kontejneru definující, které adresáře obsahují text pro nové funkce dotazovacího systému fulltextu.
- Fulltextový index přidaný do zásad indexování, který umožňuje efektivní vyhledávání.
I když je možné spouštět fulltextové vyhledávací dotazy bez těchto zásad, nevyužívají fulltextový index a můžou využívat vyšší jednotky žádostí (RU) a mít delší dobu provádění. Důrazně doporučujeme definovat zásady fulltextového kontejneru a indexu.
Zásady plnotextové politiky
Pro každou textovou vlastnost, kterou chcete nakonfigurovat pro fulltextové vyhledávání, musíte deklarovat jak path vlastnosti s textem, tak language samotný text. Jednoduché fulltextové zásady můžou být:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Definování více textových cest se snadno provádí přidáním dalšího fullTextPaths prvku do pole:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Important
Zástupné znaky (*, []) se v současné době nepodporují v zásadách fulltextu ani v fulltextovém indexu.
Podpora více jazyků (Preview)
Podpora více jazyků umožňuje indexovat a prohledávat text v jazycích mimo angličtinu. Používá tokenizaci specifickou pro jazyk, stemming a odstranění stopwordů pro přesnější výsledky hledání.
Important
Podpora více jazyků je v rané verzi Preview a nemusí být dostupná ve všech oblastech Azure.
Note
Výkon a kvalita vyhledávání se může lišit od fulltextového vyhledávání v angličtině. Například odebrání stopwordu je v tuto chvíli k dispozici pouze pro angličtinu (en-us). Funkce se můžou měnit vývojem verze Preview. Abyste to mohli vyzkoušet, musíte se zaregistrovat do nových funkcí pro funkci fulltextového vyhledávání prostřednictvím oddílu Funkce vašeho prostředku Azure Cosmos DB na webu Azure Portal.
Aktuálně podporované jazyky jsou:
-
en-US(Angličtina) -
de-DE(němčina) -
es-ES(španělština) -
fr-FR(Francouzština) -
it-IT(Italština) -
pt-PT(portugalština) -
pt-BR(Brazilská portugalština)
Fulltextový index
Všechny operace fulltextového vyhledávání by měly používat fulltextový index. Fulltextový index je možné snadno definovat v libovolné zásadě indexu Azure Cosmos DB for NoSQL podle následujícího příkladu.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Stejně jako u zásad fulltextu je možné definovat fulltextové indexy na více cestách.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Fulltextové vyhledávací dotazy
Operace fulltextového vyhledávání a bodování se provádějí pomocí následujících systémových funkcí v dotazovacím jazyce Azure Cosmos DB for NoSQL:
-
FullTextContains: Vrátítrue, pokud je daný řetězec obsažen v zadané vlastnosti dokumentu. To je užitečné vWHEREklauzuli, pokud chcete zajistit, aby konkrétní klíčová slova byla zahrnuta do dokumentů vrácených dotazem. -
FullTextContainsAll: Vrátítrue, pokud jsou všechny dané řetězce obsaženy v zadané vlastnosti dokumentu. To je užitečné vWHEREklauzuli, pokud chcete zajistit, aby v dokumentech vrácených dotazem bylo zahrnuto více klíčových slov. -
FullTextContainsAny: Vrátítrue, pokud některý z daných řetězců je obsažen v zadané vlastnosti dokumentu. To je užitečné vWHEREklauzuli, pokud chcete zajistit, aby v dokumentech vrácených dotazem obsahovala aspoň jedno z klíčových slov. -
FullTextScore: Vrátí skóre. To lze použít pouze vORDER BY RANKklauzuli, kde jsou vrácené dokumenty seřazené podle pořadí fulltextového skóre, s nejrelevavantnějšími (nejvyššími bodovacími) dokumenty nahoře a nejméně relevantními (nejnižšími bodovacími) dokumenty dole.
Tady je několik příkladů jednotlivých funkcí, které se používají.
ObsahujePlnýText
V tomto příkladu chceme získat prvních 10 výsledků, kde frázi červené kolo je obsaženo ve vlastnosti c.text.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red bicycle")
FullTextObsahujeVše
V tomto příkladu chceme získat prvních 10 výsledků, kde jsou klíčová slova červená a kolo obsažena ve vlastnosti c.text, ale ne nutně společně.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
PlnýTextObsahujeJakýkoliv
V tomto příkladu chceme získat prvních 10 výsledků, kde klíčová slova červená a buď kolo nebo skateboard jsou obsaženy ve vlastnosti c.text.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
V tomto příkladu chceme získat prvních 10 výsledků, ve kterých jsou zahrnuté horské hory a jízdní kolo , a seřazené podle pořadí relevance. To znamená, že dokumenty, které mají tyto termíny častěji, by se měly v seznamu zobrazovat výš.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, "bicycle", "mountain")
Important
FullTextScore lze použít pouze v podmínce ORDER BY RANK a ne v příkazu SELECT nebo v podmínce WHERE.
Fuzzy vyhledávání
Vyhledávání přibližných shod může zlepšit odolnost proti překlepům a variantám textu. Můžete zadat povolenou vzdálenost (počet úprav) mezi hledaným termínem a textem dokumentu, což umožňuje považovat blízké shody za platné. Maximální vzdálenost, kterou lze zadat, je 2 (dvě úpravy).
Note
Vyhledávání přibližných shod je v rané verzi Preview. Díky vývoji verze Preview se může změnit výkon, kvalita a funkce. Abyste to mohli vyzkoušet, musíte se zaregistrovat do nových funkcí pro funkci fulltextového vyhledávání prostřednictvím oddílu Funkce prostředku služby Azure Cosmos DB na webu Azure Portal.
Následující příklad dotazu načte dokumenty, ve kterých text obsahuje slova podobná červená (v rámci jedné úpravy) a bicyklu (ve dvou úpravách):
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, {"term": "red", "distance":1}) AND FullTextContains(c.text, {"term": "bycycle", "distance":2})