MongoDB Academy · Ders

İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma

Öğrenenler, tırnak içine alınmış ifadeler, olumsuzlanmış terimler ve birden çok sözcüklü ifadeler kullanarak $text ile sorgulama yapacak ve MongoDB'nin belgeleri nasıl eşleştirdiğini inceleyeceklerdir.

2. ders / 413 adım

İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.

$text Sorgu İşleci

Bir metin dizini mevcut olduğunda anahtar sözcük aramalarını, bir find() filtresi içindeki $text işleciyle yaparsınız. Değer, aradığınız sözcükleri veya ifadeleri içeren bir $search dizesine sahip nesnedir. MongoDB, arama dizenizi dizinlenen alanları belirteçlere ayırdığı şekilde belirteçlere ayırır ve ardından dizinlenen alanlardan en az birinin eşleşen bir belirteç içerdiği belgeleri döndürür.

// Simple keyword search
db.articles.find({ $text: { $search: 'mongodb index' } });

// This returns documents that contain 'mongodb' OR 'index'
// (or their stemmed variants) in any indexed field

Birden Çok Sözcükle Arama: OR Anlamı

Varsayılan olarak birden çok sözcük içeren $text araması OR anlamını kullanır: Bir belge, sözcüklerden herhangi birini içeriyorsa eşleşir. Bu nedenle 'mongodb index', 'mongodb' veya 'index' ya da her ikisini içeren belgeleri döndürür. Alaka düzeyi puanı (textScore), arama terimlerinin daha fazlasını içeren belgelerde daha yüksektir; ancak eşleşen tüm belgeler, puanlarından bağımsız olarak döndürülür.

// OR semantics: matches docs with 'mongodb' OR 'index'
db.articles.find(
  { $text: { $search: 'mongodb index' } },
  { score: { $meta: 'textScore' }, title: 1 }
).sort({ score: { $meta: 'textScore' } });

// Documents with BOTH words score higher and appear first

Çift Tırnaklarla İfade Arama

Tam bir ifade gerektirmek için ifadeyi $search dizesinin içinde kaçış karakteri eklenmiş çift tırnaklarla çevreleyin. İfade araması, sözcüklerin birlikte ve aynı sırayla bulunmasını gerektirir. İfade sözcüklerinin yalnızca bazılarını içeren, ancak tam diziyi içermeyen belgeler eşleşmez. İfade aramaları daha kesin sonuç verir; ancak sözcükleri biraz farklı olan alakalı belgeleri gözden kaçırabilir.

// Phrase search: 'database index' must appear as a phrase
db.articles.find({
  $text: { $search: '"database index"' }
});

// Only matches documents where 'database' and 'index'
// appear together as a phrase, not just anywhere in the text

// Combined phrase and keyword:
db.articles.find({
  $text: { $search: '"database index" mongodb' }
});

Eksi İşaretiyle Olumsuzlama

Bu sözcüğü içeren belgeleri hariç tutmak için bir sözcüğün önüne eksi işareti (-) koyun. Olumsuzlamayı tek başına kullanamazsınız; en az bir olumlu arama terimiyle birlikte kullanmanız gerekir. Bir anahtar sözcük fazla geniş kapsamlı olduğunda ve 'java -coffee' örneğinde olduğu gibi belirli bir istenmeyen anlamı filtrelemek istediğinizde olumsuzlama yararlıdır; böylece içeceği değil, Java hakkındaki programlama makalelerini bulabilirsiniz.

// Exclude results containing 'relational'
db.articles.find({
  $text: { $search: 'database -relational' }
});

// Find NoSQL content but exclude SQL mentions
db.articles.find({
  $text: { $search: 'nosql document store -sql -table' }
});

İfadeleri ve Olumsuzlamayı Birleştirme

Tek bir $search dizesinde ifadeleri, anahtar sözcükleri ve olumsuzlamayı serbestçe birleştirebilirsiniz. MongoDB her terimi bağımsız olarak işler: tırnak içine alınan gruplar ifade aramalarıdır, önünde eksi bulunan sözcükler hariç tutulur ve geriye kalan yalın sözcükler isteğe bağlı anahtar sözcük eşleşmeleridir. Bu birleştirilebilirlik, özel bir arama motoru olmadan orta düzeyde karmaşık arama mantığını ifade etmenizi sağlar.

// Find articles about 'index tuning' that mention 'mongodb'
// but exclude anything about 'elasticsearch'
db.articles.find({
  $text: {
    $search: '"index tuning" mongodb -elasticsearch'
  }
});

Büyük/Küçük Harf Duyarsızlığı

$text aramaları varsayılan olarak büyük/küçük harfe duyarsızdır. MongoDB, dizin oluşturma ve arama sırasında tüm belirteçleri küçük harfe dönüştürür; bu nedenle 'MongoDB', 'MONGODB' ve 'mongodb', dizinlenmiş aynı belirteçlerle eşleşir. Bir $text sorgusu çalıştırmadan önce arama girdisini normalleştirmeniz gerekmez.

// All three queries return the same results
db.articles.find({ $text: { $search: 'MongoDB' } });
db.articles.find({ $text: { $search: 'MONGODB' } });
db.articles.find({ $text: { $search: 'mongodb' } });

$language Seçeneği

Varsayılan olarak $text, metin dizininde yapılandırılan dili kullanır. Bu ayarı her sorgu için $language seçeneğiyle geçersiz kılabilirsiniz. Bu, farklı dillerde depolanan belgelerin uygun durma sözcüğü listesi ve kök bulma algoritmasıyla aranması gereken çok dilli içerik koleksiyonlarında yararlıdır.

// Override language for a specific search
db.articles.find({
  $text: {
    $search: 'base de datos',
    $language: 'spanish'
  }
});

// Or disable stop words and stemming entirely
db.articles.find({
  $text: {
    $search: 'databases',
    $language: 'none'  // exact token match, no stemming
  }
});

$caseSensitive Seçeneği

Büyük/küçük harfe duyarsız arama varsayılan olsa da $caseSensitive: true ile büyük/küçük harfe duyarlı metin aramasını etkinleştirebilirsiniz. Bu nadiren gereklidir; ancak içeriğinizde sınıf adları veya komut adları gibi büyük/küçük harfe duyarlı tanımlayıcılar varsa yararlı olabilir. Not: Büyük/küçük harfe duyarlı metin araması, önceden küçük harfe dönüştürülmüş dizin girdilerini kullanamadığı için önemli ölçüde daha yavaştır.

// Case-sensitive search (slower)
db.docs.find({
  $text: {
    $search: 'MongoDB',
    $caseSensitive: true  // 'mongodb' would NOT match
  }
});

// Case-insensitive (default, fast)
db.docs.find({
  $text: { $search: 'mongodb' }  // matches MongoDB, MONGODB, mongodb
});

$diacriticSensitive Seçeneği

Varsayılan olarak MongoDB metin araması aksan işaretlerine duyarsızdır: 'café' ve 'cafe' aynı sözcük olarak ele alınır. Aksanlı karakterleri ayırt etmek için $diacriticSensitive: true seçeneğini etkinleştirebilirsiniz. Bu, aksan işaretlerinin anlamı değiştirdiği Fransızca, Almanca veya İspanyolca gibi diller için önemlidir. Büyük/küçük harf duyarlılığında olduğu gibi aksan işaretlerine duyarlı arama, önceden normalleştirilmiş dizin girdilerini atladığı için daha yavaştır.

// Diacritic-insensitive (default)
db.articles.find({ $text: { $search: 'cafe' } });
// Matches: 'cafe', 'café', 'cáfe'

// Diacritic-sensitive
db.articles.find({
  $text: {
    $search: 'cafe',
    $diacriticSensitive: true
  }
});
// Only matches: 'cafe' (not 'café')

Toplama İşlem Hatlarında Metin Araması

$text işlecini, metin filtresini içeren bir $match aşamasını tam olarak ilk aşama konumuna yerleştirerek toplama işlem hatlarında kullanabilirsiniz. Bu, MongoDB'nin sonraki işlem hattı aşamalarını uygulamadan önce metin aramasını dizine yönlendirmesini sağlar. Ardından textScore alanını yansıtabilir, sonuçları kategoriye göre gruplayabilir veya eşleşme sayısını sınırlayabilirsiniz; bunların tümü sunucu tarafında gerçekleştirilir.

db.articles.aggregate([
  // MUST be the first stage to use the text index
  { $match: { $text: { $search: 'mongodb aggregation' } } },
  { $addFields: { score: { $meta: 'textScore' } } },
  { $sort: { score: -1 } },
  { $limit: 10 },
  { $project: { title: 1, score: 1, category: 1 } }
]);

Metin Araması Sonuçlarını Sayma

Bir metin sorgusuyla kaç belgenin eşleştiğini saymak için $text filtresiyle countDocuments() kullanın veya bir toplama işlem hattının sonuna $count aşaması ekleyin. count() kullanımından kaçının (kullanımdan kaldırılmıştır) ve estimatedDocumentCount() işlevinin filtre alamayacağını unutmayın; filtrelenmiş sayımlar için her zaman countDocuments() kullanın.

// Count matching documents
const total = await db.articles.countDocuments({
  $text: { $search: 'mongodb tutorial' }
});
console.log('Matches:', total);

// In an aggregation pipeline
db.articles.aggregate([
  { $match: { $text: { $search: 'mongodb tutorial' } } },
  { $count: 'total' }
]);

Hızlı Kontrol

Bu dersteki $text sorgu seçeneklerini anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: yalın sözcükler OR anlamını kullanır ve arama terimlerinden herhangi biriyle eşleşir; çift tırnak içine alınmış ifadeler tam bir sözcük dizisi gerektirir; önünde eksi bulunan sözcükler bu terimi içeren belgeleri hariç tutar. Sırada, sonuçları $meta kullanarak metin alaka düzeyi puanına göre sıralayacağız.

Başlamak ücretsiz

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma” dersi ücretsiz mi?

Evet — “İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.

“İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma” dersinde ne öğreneceğim?

Öğrenenler, tırnak içine alınmış ifadeler, olumsuzlanmış terimler ve birden çok sözcüklü ifadeler kullanarak $text ile sorgulama yapacak ve MongoDB'nin belgeleri nasıl eşleştirdiğini inceleyeceklerdi… MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dize Alanında Metin Dizini Oluşturma
  2. İfadeler ve Olumsuzlamayla $text Sorguları Çalıştırma
  3. $meta ile textScore'a Göre Sıralama
  4. Metin Dizini Sınırlamaları ve Atlas Search Kullanım Zamanı
← MongoDB Academy Sayfasına Dön