Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jedną z kluczowych funkcji oferowanych przez usługę Azure DocumentDB jest indeksowanie tekstu, które umożliwia wydajne wyszukiwanie i wykonywanie zapytań dotyczących danych tekstowych. Usługa implementuje indeksy tekstowe w wersji 2 . Wersja 2 rozróżnia wielkość liter, ale nie czułość na znaki diakrytyczne.
Indeksy tekstowe w usłudze Azure DocumentDB to specjalne struktury danych, które optymalizują zapytania tekstowe, dzięki czemu są szybsze i bardziej wydajne. Są one przeznaczone do obsługi zawartości tekstowej, takiej jak dokumenty, artykuły, komentarze lub inne dane z dużą liczbą tekstu. Indeksy tekstowe używają technik, takich jak tokenizacja, lematyzacja i pomijanie słów pustych, w celu utworzenia indeksu, który poprawia wydajność wyszukiwania tekstowego.
Wymagania wstępne
Subskrypcja platformy Azure
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto
Istniejący klaster usługi Azure DocumentDB
- Jeśli nie masz klastra, utwórz nowy klaster
Definiowanie indeksu tekstowego
Dla uproszczenia rozważmy przykład aplikacji blogu z następującą konfiguracją:
-
Nazwa bazy danych:
cosmicworks -
Nazwa kolekcji:
products
Ta przykładowa aplikacja przechowuje artykuły jako dokumenty o następującej strukturze:
{
"_id": ObjectId("617a34e7a867530bff1b2346"),
"title": "Azure DocumentDB - A Game Changer",
"content": "Azure DocumentDB is a globally distributed, multi-model database service.",
"author": "John Doe",
"category": "Technology",
"published": true
}
createIndexUżyj metody z opcjątext, aby utworzyć indeks tekstowy wtitlepolu.use cosmicworks; db.products.createIndex({ title: "text" })Uwaga / Notatka
Chociaż można zdefiniować tylko jeden indeks tekstowy na kolekcję, usługa Azure DocumentDB umożliwia tworzenie indeksów tekstowych w wielu polach w celu umożliwienia wyszukiwania tekstu w różnych polach w dokumentach.
Opcjonalnie utwórz indeks do obsługi wyszukiwania w polach
titleicontent.db.products.createIndex({ title: "text", content: "text" })
Konfigurowanie opcji indeksu tekstowego
Indeksy tekstowe w usłudze Azure DocumentDB mają kilka opcji dostosowywania ich zachowania. Można na przykład określić język analizy tekstu, ustawić wagi, aby określić priorytety niektórych pól i skonfigurować wyszukiwania bez uwzględniania wielkości liter. Oto przykład tworzenia indeksu tekstowego z opcjami:
Utwórz indeks do obsługi wyszukiwania w polach
titleicontentz obsługą języka angielskiego. Ponadto przypisz większe wagi dotitlepola, aby określić priorytety w wynikach wyszukiwania.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Wagi w indeksach tekstowych
Podczas tworzenia indeksu tekstowego można przypisać różne wagi do poszczególnych pól w indeksie. Wagi te reprezentują znaczenie lub istotność każdego pola w wyszukiwaniu. Usługa Azure DocumentDB oblicza ocenę i przypisane wagi dla każdego dokumentu na podstawie terminów wyszukiwania podczas wykonywania zapytania wyszukiwania tekstowego. Wynik reprezentuje istotność dokumentu w zapytaniu wyszukiwania.
Utwórz indeks do obsługi wyszukiwania w polach
titleicontent. Przypisz wagę 2 do pola "title" i wagę 1 do pola "content".db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Uwaga / Notatka
Gdy klient wykonuje zapytanie wyszukiwania tekstu z terminem "DocumentDB", wynik dla każdego dokumentu w kolekcji zostanie obliczony na podstawie obecności i częstotliwości terminu zarówno w polach "title" i "content", o większej ważności dla pola "title" ze względu na większą wagę.
Wyszukiwanie tekstu przy użyciu indeksu tekstowego
Po utworzeniu indeksu tekstu można wykonywać wyszukiwania tekstowe przy użyciu operatora "text" w zapytaniach. Operator tekstu przyjmuje ciąg wyszukiwania i dopasuje go do indeksu tekstu w celu znalezienia odpowiednich dokumentów.
Wykonaj wyszukiwanie tekstu dla frazy
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Opcjonalnie użyj operatora projekcji
$metaw zapytaniu wraz z polemtextScore, aby zobaczyć wagędb.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Usuwanie indeksu tekstowego
Aby usunąć indeks tekstowy w bazie danych MongoDB, możesz użyć dropIndex() metody w kolekcji i określić klucz indeksu lub nazwę indeksu tekstu, który chcesz usunąć.
Upuść indeks tekstowy, jawnie określając klucz.
db.products.dropIndex({ title: "text" })Opcjonalnie upuść indeks tekstowy, określając automatycznie wygenerowaną unikatową nazwę.
db.products.dropIndex("title_text")
Ograniczenia indeksu tekstu
- W kolekcji można zdefiniować tylko jeden indeks tekstowy.
- Wskazówka() nie jest obsługiwana w połączeniu z zapytaniem używającym wyrażenia $text.
- Operacje sortowania nie mogą używać kolejności indeksu tekstowego w bazie danych MongoDB.
- Indeksy tekstowe mogą być stosunkowo duże, zużywając znaczną ilość miejsca do magazynowania w porównaniu z innymi typami indeksów.