Volltextsuche in Azure Cosmos DB for NoSQL (Vorschau)
Azure Cosmos DB for NoSQL bietet jetzt ein leistungsfähiges Feature für die Volltextsuche in der Vorschauversion, das die Suchfunktionen Ihrer Anwendungen verbessern soll.
Hinweis
Die Volltext- und Hybridsuche befindet sich in der frühen Vorschau und ist derzeit möglicherweise nicht in allen Regionen verfügbar.
Was ist die Volltextsuche?
Azure Cosmos DB for NoSQL bietet jetzt ein leistungsfähiges Feature für die Volltextsuche in der Vorschauversion, das die Datenabfragefunktionen Ihrer Anwendungen verbessern soll. Dieses Feature umfasst erweiterte Textverarbeitungstechniken wie Wortstammerkennung, Stoppwortentfernung und Tokenisierung, wodurch effiziente und effektive Textsuchen über einen speziellen Textindex ermöglicht werden. Die Volltextsuche umfasst außerdem die Volltextbewertung mit einer Funktion, die die Relevanz von Dokumenten für eine bestimmte Suchabfrage auswertet. BM25 (Best Matching 25) berücksichtigt Faktoren wie Begriffshäufigkeit, umgekehrte Dokumenthäufigkeit und Dokumentlänge für die Bewertung von Dokumenten. Dadurch wird sichergestellt, dass die relevantesten Dokumente oben in den Suchergebnissen angezeigt werden, um die Genauigkeit und Nützlichkeit von Textsuchen zu verbessern.
Die Volltextsuche eignet sich ideal für eine Vielzahl von Szenarien, darunter:
- E-Commerce: Schnelle Suche nach Produkten basierend auf Beschreibungen, Bewertungen und anderen Textattributen.
- Content Management: Effizientes Durchsuchen von Artikeln, Blogs und Dokumenten.
- Kundendienst: Abrufen relevanter Supporttickets, FAQs und Knowledge Base-Artikel.
- Benutzerinhalte: Analysieren und Durchsuchen von benutzergenerierten Inhalten wie Beiträgen und Kommentaren.
- RAG für Chatbots: Verbessern der Chatbot-Antworten durch Abrufen relevanter Informationen aus großen Textkorpora, wodurch die Genauigkeit und Relevanz von Antworten verbessert wird.
- Multi-Agent-KI-Apps: Aktivieren mehrerer KI-Agents zum gemeinsamen Durchsuchen und Analysieren großer Textdatenmengen, um umfassende und differenzierte Erkenntnisse bereitzustellen.
Verwenden der Volltextsuche
Hinweis
Die Volltext- und Hybridsuche (Vorschau) ist derzeit möglicherweise nicht in allen Regionen verfügbar.
- Aktivieren Sie die Previewfunktion „Volltext- und Hybridsuche für NoSQL“.
- Konfigurieren Sie einen Container mit einer Volltextrichtlinie und einem Volltextindex.
- Fügen Sie Ihre Daten mit Texteigenschaften ein.
- Führen Sie Hybridabfragen für die Daten aus.
Aktivieren des Vorschaufeatures für die Volltext- und Hybridsuche für NoSQL
Für die Volltextsuche, Volltextbewertung und Hybridsuche muss das Vorschaufeature in Ihrem Azure Cosmos DB for NoSQL-Konto aktiviert werden, bevor sie verwendet werden können. Führen Sie die folgenden Schritte aus, um sich zu registrieren:
- Navigieren Sie zu Ihrer Azure Cosmos DB for NoSQL-Ressourcenseite.
- Wählen Sie den Bereich "Features" unter dem Menüelement "Einstellungen" aus.
- Wählen Sie das Feature „Full-Text & Hybrid Search for NoSQL API (preview)“ aus.
- Lesen Sie die Beschreibung des Features, und bestätigen Sie danach, dass Sie es aktivieren möchten.
- Wählen Sie „Aktivieren“ aus, um die Vektorindizierungs- und -suchfunktion zu aktivieren.
Konfigurieren von Containerrichtlinien und Indizes für die Hybridsuche
Um die Funktionen für die Volltextsuche zu verwenden, müssen Sie zunächst zwei Richtlinien definieren:
- Eine Volltextrichtlinie auf Containerebene, die definiert, welche Pfade Text für die neuen Systemfunktionen der Volltextabfrage enthalten.
- Ein der Indizierungsrichtlinie hinzugefügter Volltextindex, der eine effiziente Suche ermöglicht.
Volltextrichtlinie
Für jede Texteigenschaft, die Sie für die Volltextsuche konfigurieren möchten, müssen Sie sowohl path
der Eigenschaft mit Text als auch language
des Texts deklarieren. Eine einfache Volltextrichtlinie kann wie folgt aussehen:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Das Definieren mehrerer Textpfade erfolgt ganz einfach durch Hinzufügen eines weiteren Elements zum fullTextPolicy
-Array:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Hinweis
Derzeit wird nu Englisch („en-us“) als Sprache unterstützt.
Wichtig
Platzhalterzeichen (*, []) werden derzeit in der Volltextrichtlinie oder im Volltextindex nicht unterstützt.
Volltextindex
Alle Volltextsuchvorgänge sollten einen Volltextindex verwenden. Ein Volltextindex kann ganz einfach in jeder Azure Cosmos DB for NoSQL-Indexrichtlinie gemäß dem folgenden Beispiel definiert werden.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Genau wie bei den Volltextrichtlinien können Volltextindizes für mehrere Pfade definiert werden.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Volltextsuchabfragen
Volltextsuch- und -bewertungsvorgänge werden mithilfe der folgenden Systemfunktionen in der Azure Cosmos DB for NoSQL-Abfragesprache ausgeführt:
FullTextContains
: Gibttrue
zurück, wenn eine angegebene Zeichenfolge in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einerWHERE
-Klausel hilfreich, wenn Sie sicherstellen möchten, dass bestimmte Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.FullTextContainsAll
: Gibttrue
zurück, wenn alle der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten sind. Dies ist in einerWHERE
-Klausel hilfreich, wenn Sie sicherstellen möchten, dass mehrere Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.FullTextContainsAny
: Gibttrue
zurück, wenn eine der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einerWHERE
-Klausel hilfreich, wenn Sie sicherstellen möchten, dass mindestens ein Schlüsselwort in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten ist.FullTextScore
: Gibt eine Bewertung zurück. Dies kann nur in einerORDER BY RANK
-Klausel verwendet werden, in der die zurückgegebenen Dokumente nach dem Rang der Volltextbewertung sortiert werden, wobei die relevantesten Dokumente (höchste Bewertung) oben und die Dokumente mit der geringsten Relevanz (niedrigste Bewertung) unten aufgeführt sind.
Im Folgenden finden Sie einige Beispiele für die einzelnen Funktionen.
FullTextContains
In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen das Schlüsselwort „bicycle“ in der Eigenschaft c.text
enthalten ist.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen die Schlüsselwörter „red“ und „bicycle“ in der Eigenschaft c.text
enthalten sind.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, bei denen die Schlüsselwörter „red“ und entweder „bicycle“ oder „skateboard“ in der Eigenschaft c.text
enthalten sind.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
In diesem Beispiel möchten wir die ersten 10 Ergebnisse abrufen, in denen „mountain“ und „bicycle“ enthalten sind. Die Ergebnisse sollen nach Relevanz sortiert werden. Das heißt, Dokumente, in denen diese Begriffe häufiger vorkommen, sollten weiter oben in der Liste angezeigt werden.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Wichtig
FullTextScore kann nur in der ORDER BY RANK
-Klausel verwendet und nicht in der SELECT
-Anweisung oder in einer WHERE
-Klausel projiziert werden.