Freigeben über


Volltextsuche in Azure Cosmos DB für NoSQL

Wichtig

Die Unterstützung für dieses Feature wird global eingeführt und ist möglicherweise noch nicht vollständig in allen öffentlichen Azure-Regionen verfügbar.

Azure Cosmos DB für NoSQL bietet jetzt eine leistungsfähige Volltext-Suchfunktion, die ab sofort allgemein verfügbar ist. Dies wurde entwickelt, um die systemeigenen Suchfunktionen Ihrer Apps zu verbessern, ohne einen externen Suchdienst für die grundlegende Volltextsuche zu benötigen.

Azure Cosmos DB für NoSQL bietet jetzt Volltextindizierung und Suche, die entwickelt wurde, um Ihre Such- und Abrufworkloads zu verbessern. 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.
  1. Konfigurieren Sie einen Container mit einer Volltextrichtlinie und einem Volltextindex.
  2. Fügen Sie Ihre Daten mit Texteigenschaften ein.
  3. Führen Sie Abfragen für die Daten mithilfe von Volltext-Suchsystemfunktionen aus.

Um Die Funktionen für die Volltextsuche zu verwenden, sollten Sie zuerst zwei Richtlinien definieren:

  • Eine Volltextrichtlinie auf Containerebene, die definiert, welche Pfade Text für die neuen Funktionen des Volltextabfragesystems enthalten.
  • Ein der Indizierungsrichtlinie hinzugefügter Volltextindex, der eine effiziente Suche ermöglicht.

Obwohl es möglich ist, Volltextsuchabfragen ohne diese Richtlinien auszuführen, verwenden sie nicht den Volltextindex und können höhere RUs nutzen und längere Ausführungszeiten haben. Es wird dringend empfohlen, Volltextcontainer- und Indexrichtlinien zu definieren.

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"
       }
   ]
}

Wichtig

Platzhalterzeichen (*, []) werden derzeit in der Volltextrichtlinie oder im Volltextindex nicht unterstützt.

Mehrsprachige Unterstützung (Vorschau)

Unterstützung für mehrere Sprachen ermöglicht es Ihnen, Text in Sprachen über Englisch hinaus indizieren und zu durchsuchen. Sie wendet sprachspezifische Tokenisierung, Wortstammerkennung und Stoppwortentfernung an, um genauere Suchergebnisse zu erhalten.

Hinweis

Die Unterstützung für mehrere Sprachen befindet sich in der frühen Vorschau. Die Leistung und Qualität der Suche unterscheiden sich möglicherweise von der Volltextsuche in Englisch. Das Entfernen von Stoppworten ist z. B. zurzeit nur für Englisch (en-us) verfügbar. Die Funktionalität kann durch die Weiterentwicklung der Vorschau geändert werden. Um es zu testen, müssen Sie sich im Feature "Vorschaufunktionen für die Volltextsuche " über den Abschnitt "Features" Ihrer Azure Cosmos DB-Ressource im Azure-Portal registrieren.

Derzeit unterstützte Sprachen sind:

  • en-US (Englisch)
  • de-DE (Deutsch)
  • es-ES (Spanisch)
  • fr-FR (Französisch)

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: Gibt true zurück, wenn eine angegebene Zeichenfolge in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einer WHERE-Klausel hilfreich, wenn Sie sicherstellen möchten, dass bestimmte Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.
  • FullTextContainsAll: Gibt true zurück, wenn alle der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten sind. Dies ist in einer WHERE-Klausel hilfreich, wenn Sie sicherstellen möchten, dass mehrere Schlüsselwörter in den von Ihrer Abfrage zurückgegebenen Dokumenten enthalten sind.
  • FullTextContainsAny: Gibt true zurück, wenn eine der angegebenen Zeichenfolgen in der angegebenen Eigenschaft eines Dokuments enthalten ist. Dies ist in einer WHERE-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 einer ORDER 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, in denen der Ausdruck "rotes Fahrrad" in der Eigenschaft c.textenthalten ist.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red bicycle")

FullTextContainsAll

In diesem Beispiel möchten wir erste 10 Ergebnisse erhalten, bei denen die Schlüsselwörter "rot" und "fahrrad" in der Eigenschaft c.textenthalten sind, aber nicht unbedingt zusammen.

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.

Fuzzy-Suche (Vorschau)

Die Fuzzysuche kann die Toleranz gegenüber Tippfehlern und Textvariationen verbessern. Sie können einen zulässigen "Abstand" (Anzahl der Bearbeitungen) zwischen dem Suchbegriff und Dokumenttext angeben, sodass nahe Übereinstimmungen als Treffer angesehen werden können. Der maximale Abstand, der angegeben werden kann, ist 2 (zwei Bearbeitungen).

Hinweis

Die Fuzzysuche befindet sich in der frühen Vorschau. Leistung, Qualität und Funktionalität können sich durch die Weiterentwicklung der Vorschau ändern. Um es zu testen, müssen Sie sich im Feature "Vorschaufunktionen für die Volltextsuche " über den Abschnitt "Features" Ihrer Azure Cosmos DB-Ressource im Azure-Portal registrieren.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, {"term": "red", "distance":1}, {"term": "bicycle", "distance":2})