Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DocumentDB'nin sağladığı temel özelliklerden biri, metin tabanlı verilerin verimli bir şekilde aranmasını ve sorgulanabilmesini sağlayan metin dizini oluşturmadır. Hizmet sürüm 2 metin dizinlerini uygular. Sürüm 2 büyük/küçük harf duyarlılığını destekler ancak aksan duyarlılığını desteklemez.
Azure DocumentDB'deki metin dizinleri, metin tabanlı sorguları iyileştirerek daha hızlı ve verimli hale getiren özel veri yapılarıdır. Belgeler, makaleler, açıklamalar veya yoğun metin içeren diğer veriler gibi metin içeriklerini işlemek için tasarlanmıştır. Metin dizinleri, metin tabanlı aramaların performansını geliştiren bir dizin oluşturmak için belirteç oluşturma, kök oluşturma ve durdurma sözcükleri gibi teknikleri kullanır.
Önkoşullar
Azure aboneliği
- Azure aboneliğiniz yoksa ücretsiz bir hesap oluşturun
Mevcut bir Azure DocumentDB kümesi
- Kümeniz yoksa yeni bir küme oluşturun
Metin dizini tanımlama
Kolaylık olması için aşağıdaki kuruluma sahip bir blog uygulaması örneğini ele alalım:
-
Veritabanı adı:
cosmicworks -
Koleksiyon adı:
products
Bu örnek uygulama, makaleleri aşağıdaki yapıya sahip belgeler olarak depolar:
{
"_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
}
Metin dizini oluşturmak için
createIndexyöntemini,textseçeneği iletitlealanında kullanın.use cosmicworks; db.products.createIndex({ title: "text" })Uyarı
Koleksiyon başına yalnızca bir metin dizini tanımlayabilirsiniz ancak Azure DocumentDB, belgelerinizdeki farklı alanlarda metin aramaları gerçekleştirmenizi sağlamak için birden çok alanda metin dizinleri oluşturmanıza olanak tanır.
İsteğe bağlı olarak, hem
titlehem decontentalanlarında aramayı desteklemek için bir dizin oluşturun.db.products.createIndex({ title: "text", content: "text" })
Metin dizini seçeneklerini yapılandırma
Azure DocumentDB'deki metin dizinleri, davranışlarını özelleştirmek için çeşitli seçeneklerle birlikte gelir. Örneğin, metin analizi dilini belirtebilir, belirli alanların önceliğini belirlemek için ağırlıkları ayarlayabilir ve büyük/küçük harfe duyarlı olmayan aramaları yapılandırabilirsiniz. Aşağıda seçenekler içeren bir metin dizini oluşturma örneği verilmişti:
İngilizce dil desteğine sahip ve
titlecontentalanlarında aramayı desteklemek için bir dizin oluşturun. Ayrıca, arama sonuçlarında önceliklerini belirlemek için alana daha yüksek ağırlıklartitleatayın.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Metin dizinlerindeki ağırlıklar
Metin dizini oluştururken, dizindeki tek tek alanlara farklı ağırlıklar atayabilirsiniz. Bu ağırlıklar, aramadaki her alanın önemini veya ilgi düzeyini temsil eder. Azure DocumentDB, bir metin arama sorgusu yürütürken arama terimlerine göre her belge için bir puan ve atanmış ağırlık hesaplar. Puan, belgenin arama sorgusuyla olan ilgi düzeyini temsil eder.
hem hem
titledecontentalanlarında aramayı desteklemek için bir dizin oluşturun. "Başlık" alanına 2, "içerik" alanına 1 ağırlık atayın.db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Uyarı
İstemci "DocumentDB" terimiyle bir metin arama sorgusu gerçekleştirdiğinde, koleksiyondaki her belgenin puanı hem "başlık" hem de "içerik" alanlarında terimin varlığı ve sıklığına göre hesaplanır ve daha yüksek ağırlığı nedeniyle "başlık" alanına daha yüksek önem verilir.
Metin dizini kullanarak metin araması yapma
Metin dizini oluşturulduktan sonra, sorgularınızdaki "text" işlecini kullanarak metin aramaları yapabilirsiniz. Metin işleci bir arama dizesi alır ve ilgili belgeleri bulmak için bu dizeyi metin diziniyle eşleştirir.
tümceciği
DocumentDBiçin metin araması yapın.db.products.find( { $text: { $search: "DocumentDB" } } )İsteğe bağlı olarak, ağırlığı görmek için sorguda
$metaprojeksiyon işlecini vetextScorealanını birlikte kullanın.db.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Metin dizini bırakılıyor
MongoDB'de bir metin dizini bırakmak için, koleksiyondaki yöntemini kullanabilir dropIndex() ve kaldırmak istediğiniz metin dizini için dizin anahtarını veya adını belirtebilirsiniz.
Anahtarı açıkça belirterek bir metin dizinini kaldırın.
db.products.dropIndex({ title: "text" })İsteğe bağlı olarak, otomatik olarak üretilen benzersiz adı belirterek bir metin dizinini kaldırabilirsiniz.
db.products.dropIndex("title_text")
Metin dizini sınırlamaları
- Bir koleksiyonda yalnızca bir metin dizini tanımlanabilir.
- Hint(), $text ifadesi kullanan bir sorguyla birlikte desteklenmez.
- Sıralama işlemleri MongoDB'de metin dizininin sıralamasını kullanamaz.
- Metin dizinleri görece büyük olabilir ve diğer dizin türlerine kıyasla önemli depolama alanı tüketebilir.