MongoDB'de Text Search Nasıl Yapılır?

MongoDB'de Text Search Nasıl Yapılır?

MongoDB'de text search nasıl yapılır? Bu makale size bu sorunun cevabını verir! MongoDB'de text search kullanımı ile kolay ve hızlı bir şekilde aradığınız verileri bulabilirsiniz Tek yapmanız gereken bu rehberi takip etmek Hemen okuyun ve uygulamaya başlayın!

MongoDB'de Text Search Nasıl Yapılır?

MongoDB, dinamik ve ölçeklenebilir mimarisi ile geniş bir kullanıcı kitlesine hitap ediyor. Veri tabanında işlem yapmak isteyenler için sunduğu birçok özellik arasında text search özelliği de yer alıyor. Text search, veritabanında metin arama işlemi yapabilmenizi sağlayan bir özelliktir. Bu makalede, MongoDB'de text search özelliğini nasıl kullanacağınızı adım adım öğreneceksiniz.

Text search özelliği, veritabanında bulunan metinleri indeksleyerek hızlı arama imkanı sunar. Bu sayede yapılan aramalar çok daha hızlı gerçekleştirilebilir. Text search özelliğini kullanmak için öncelikle etkinleştirmeniz gerekiyor. Ardından verilerinizi ekleyerek ve text search sorgusu yaparak aradığınız verilere kolayca ulaşabilirsiniz.

Özellikle büyük boyutlu verilerde text search, arama işleminin hızlı ve etkili bir şekilde yapılmasını sağlar. Ayrıca, text search sorguları için birçok yapılandırma seçeneği de mevcuttur.


Text Search Nedir?

MongoDB, yenilikçi bir veri tabanı platformudur ve şirketler tarafından hızla benimsenmektedir. Bu platformda, bilgilerin depolanması ve erişimi oldukça hızlı ve güvenli bir şekilde gerçekleştirilir.

Text search özelliği, MongoDB'de metin tabanlı belgelere erişim sağlamak için kullanılan bir özelliktir. Metin arama işlemi, veri tabanındaki belgelerin içeriği taranarak, içerisinde aranan kelimelerin bulunup bulunmadığına dair sorgular yapılır. Bu sayede, kullanıcıların belge içeriğindeki özel metinlerin aranması daha kolay ve hızlı bir şekilde gerçekleşir.

Örneğin, bir e-ticaret platformunda müşterilerin isteklerine göre belirli kategorilere ait ürün araması yapması gerektiğinde text search özelliği devreye girer ve müşterinin aradığı ürünleri daha hızlı bir şekilde bulmasına yardımcı olur.


Text Search Nasıl Aktif Hale Getirilir?

MongoDB veritabanında text search özelliği, öntanımlı olarak etkisizdir. Bu nedenle, text search özelliğini aktif hale getirmek için bazı adımlar izlemeniz gerekmektedir. İlk olarak, text search özelliğini etkinleştirmek için "text" tipinde bir index oluşturmanız gerekir.

Bunun için, "createIndex()" komutunu kullanarak ve options bölümünde "default_language" ve "language_override" özelliklerini belirleyerek text tipinde bir index oluşturabilirsiniz. "default_language" özelliği, index'lenen dökümanlarda doğal dil olarak hangi dilin kullanıldığını belirlerken, "language_override" özelliği ise indekslenen dökümanlardaki herhangi bir özelliği, belirli bir dili kullanmak için değiştirmek için kullanılır.

Örneğin, bir "articles" kolleksiyonu olduğunu varsayalım ve bu kolleksiyonda birden fazla dili kullanan makalelerimiz olsun. Bu durumda, "default_language" olarak en yaygın kullanılan dili belirleyebiliriz. Ardından, "language_override" özelliği ile indekslenen dökümanlar içindeki farklı dilleri belirleyebiliriz.

Text search özelliği yapılandırılırken, text search sorgusu için kullanılan "text" anahtar kelimesi, "find()" komutuna eklenir. "text" anahtar kelimesi, içinde arama yapılan metnin yanı sıra, aramanın hangi alanlarda (fields) yapılacağını da belirler. Örneğin, sadece "title" alanında metin arama yapmak için "text" anahtar kelimesi aşağıdaki gibi kullanılabilir;

db.articles.find({ $text: { $search: "MongoDB", $fields: { title: 1 } } })

Bu sorgu, "title" alanında "MongoDB" kelimesini içeren tüm makaleleri döndürecektir.


Index Oluşturma

Text search özelliğini MongoDB'de kullanmak için öncelikle bir index oluşturmanız gerekiyor. Bu sayede kayıtların içerisinde arama yaparken daha hızlı sonuçlar alabilirsiniz. Bir index oluşturmak için kullanılacak olan collection'a gidilir ve üzerinde işlem yapılacak field seçilir.

Örneğin, aşağıdaki collection'da "title" field'ı üzerinde text search yapmak istiyoruz:

  • books :
  • [
  • {
  • "_id": ObjectId("5f91bb3bd48d2440e31e524e"),
  • "title": "Ahmet Hamdi Tanpınar - Saatleri Ayarlama Enstitüsü",
  • "author": "Ahmet Hamdi Tanpınar"
  • }
  • ]

Bu örnekte "title" field'ı üzerinde text search yapmak istediğimiz için bir index oluşturmalıyız. Bu işlem için "text" alan türü kullanılır. Aşağıdaki kod satırını kullanarak bir index oluşturabilirsiniz:

Kod Açıklama
db.books.createIndex({title: "text"}) "books" collection'ı üzerinde "title" field'ını text search için index'le oluşturmak.

Böylece "title" field'ı üzerinde text search özelliğini kullanabilirsiniz.


Text Search Query Yapısı

MongoDB'de text search sorgusu yapmak oldukça kolaydır. Anında arama sonuçları için metin arama sorgusu yazmanız yeterlidir. Text search sorgusu standardı bir metin sorgu dilidir ve birkaç parametre içerir. Bu parametreler arasında aranacak kelime, kelime sırası, aranacak kelimeyle eşleşen önek veya son ek belirtilmesi yer alabilir.

Text search sorgusu Syntax şu şekildedir:

```db.collection.find({$text: {$search: "aranacak kelime"}})```

Burada ''db.collection'' aranacak olan koleksiyonu, ''$text'' koleksiyondaki text search özelliğini belirtirken, ''$search'' ise aranacak kelimeyi belirtir. Örneğin, ‘mongoDB’ kelimesini içeren bir kayıt arayalım:

```{ $text: { $search: "mongoDB" } }```

Burada eğer iki veya daha fazla kelime arıyorsanız arama sorgusu şu şekilde olacaktır:

```{ $text: { $search: "kelime1 kelime2 kelime3" } }```

Text search sorgusu standart bir metin sorgu dilidir ve birkaç parametre içerir. Bu parametreler arasında aranacak kelime, kelime sırası, aranacak kelimeyle eşleşen önek veya son ek belirtilmesi yer alabilir.

Ayrıca, text search sorgusu için çok sayıda parametre vardır ve bu parametreler arama sonrası dönen sonuçları sıralamak için kullanılabilir. Örneğin, sonuçların skorunu artırmak için ''$meta'' parametresi kullanılır. Aynı zamanda ''$caseSensitive'', ''$diacriticSensitive'' ve ''$language'' gibi parametreler de yer alabilir.

MongoDB'de text search özelliği ile verilerinizi hızlı ve etkili bir şekilde arayabilirsiniz. Yalnızca text search özelliğini etkinleştirmeniz, verileri eklemeniz ve doğru text search sorgusu yazmanız yeterlidir.


Örnek Uygulama

MongoDB, veritabanı sistemi için geliştirilen text search özelliği sayesinde metin arama işlemini oldukça kolaylaştırır. Bu özellik sayesinde veri tabanında yer alan belgelerin içerisindeki metinlerin kolayca aranması mümkündür. İsterseniz MongoDB veritabanında text search özelliğini nasıl aktif hale getireceğinizi ve bir örnek uygulama içerisinde text search işleminin nasıl yapılacağını inceleyelim.

Text search işlemi yapmak için öncelikle bu özelliğin MongoDB'de etkinleştirilmesi gerekiyor. Etkinleştirmek için bir index oluşturmak gerekmektedir. Bunun için ilgili collection üzerinde aşağıdaki komut kullanılmalıdır:

Komut Açıklama
db.collection.createIndex( { yazi: "text" } ) Yazı alanı üzerinde bir text indexi oluşturulur.

Text search işlemi yapabilmek için öncelikle MongoDB veritabanına belgelerin eklenmesi gerekiyor. Örnek olarak aşağıdaki belge MongoDB veritabanına ekleniyor:

{  "yazi": "MongoDB'de text search özelliği nasıl kullanılır, inceleyelim.",  "tarih": "2022-08-09"}

Artık belgeyi eklediğimize göre, text search sorgusu yapabiliriz. Aşağıdaki örnek sorgu belirtilen belgeyi döndürecektir:

db.collection.find( { $text: { $search: "MongoDB text search" } } )

Bu sorgu MongoDB'de yazi alanı içerisinde "MongoDB" ve "text search" kelimelerini arayacak ve bu kelimeleri içeren belgeleri döndürecektir.

Text search sorgusu sonucunda, belirtilen kelimeleri içeren tüm belgeler dönecektir. Ancak bazen sadece belirli koşulları karşılayan belgeleri göstermek isteyebiliriz. Örneğin, yalnızca belirli bir tarih aralığındaki belgeleri göstermek isteyebiliriz. Böyle bir durumda şu sorgu kullanılabilir:

db.collection.find({ $and: [ { $text: { $search: "MongoDB text search" } }, { tarih: { $gte: ISODate("2022-08-01"), $lt: ISODate("2022-08-31") } } ]})

Bu sorgu belirtilen tarih aralığında yer alan "MongoDB" ve "text search" kelimelerini içeren belgeleri döndürecektir.


1. Text Search Özelliğinin Etkinleştirilmesi

MongoDB'de text search işlemi yapabilmek için öncelikle bu özelliğin etkinleştirilmesi gerekmektedir. Text search özelliği, her şeyden önce bir index oluşturulması gerektiğini gerektirmektedir. Daha sonra bu index'in veritabanına eklenmesi ve son olarak da text search özelliğinin atanması işlemleri yapılmalıdır.

Index oluşturma işlemi için öncelikle bir collection belirlemeliyiz. Bu collection üzerinde text search işlemi yapılacağını belirtmek için şu kodu kullanabilirsiniz: ```db.collection.createIndex({ad: "text"})```Bu sayede MongoDB, "ad" alanı üzerinde text search işlemi yaparken kullanacağı index'i oluşturacaktır.

Index oluşturma işlemi tamamlandıktan sonra, veritabanına veri eklenmelidir. Örneğimizde, "products" adında bir collection oluşturulduğunu varsayalım. Bu collection'a yeni bir döküman eklendiğinde, "ad" alanının text search işlemine uygun şekilde eklenmesi gerekmektedir. Veri eklemek için şu kodu kullanabilirsiniz:```db.products.insertOne({ad: "Kitap", fiyat: 20, yazar: "Ahmet"})```Text search özelliğinin etkinleştirilmesi için, veritabanındaki bu collection'a şöyle bir kod eklemeniz yeterli olacaktır:```db.collectionName.createIndex({ ad: "text" })```Artık, text search özelliği başarıyla etkinleştirilmiş oldu. İlgili collection üzerinde text search sorguları yapılabilir.


2. Verilerin Eklenmesi

Bir MongoDB veritabanına veri eklerken, text search özelliğini kullanmak için bazı gereksinimleri yerine getirmek gerekiyor. İlgili collection üzerinde bir text indexinin olması gerekiyor, ayrıca eklenen verilerin de text formatında olması gerekiyor.

Örneğimizde kullanacağımız collection'un ismi 'products' olsun ve yeni bir ürün ekleyelim.

Alan Veri
_id 1
name iPhone 13 Pro
description The new iPhone 13 Pro that comes with a faster A15 Bionic chip and Super Retina XDR display.

Yukarıdaki veriler, 'products' collection'ına eklenmek için kullanılabilir. Bu veriler text formatında olduğu için text search özelliğini kullanabiliriz. Veritabanına veri eklemek için aşağıdaki komut kullanılabilir:

db.products.insertOne(  {    _id: 1,    name: "iPhone 13 Pro",    description: "The new iPhone 13 Pro that comes with a faster A15 Bionic chip and Super Retina XDR display."  })

Bu şekilde eklenen veriler, text search özelliği aktif hale getirildiği zaman bu özelliği kullanarak metin arama işlemi gerçekleştirilebilir.


3. Text Search Sorgusu

MongoDB'de text search sorgusu yapmak oldukça basittir. Sorgu yapmak için $text operatörü kullanılır. Bu operatörü kullanarak, metnin içinde aranacak kelimeler belirtilir. Örneğin, "Java" kelimesini içeren metinler için arama yapmak istiyorsak, aşağıdaki gibi bir sorgu yazabiliriz:

```{ $text: { $search: "Java" } }```

Bu sorgu, veritabanındaki bütün metinleri tarayacak ve "Java" kelimesini içeren bütün metinleri döndürecektir. Ancak, bu sorgunun sonuçlarına, metnin içindeki kelimelerin sıklığına göre puanlama yaparak ulaşılır. Bu puanlama fonksiyonu, text search özelliğinin en önemli avantajlarından biridir.

Text search sorguları ayrıca, arama sonuçlarının filtrelenmesi amacıyla diğer sorgu operatörleriyle birlikte kullanılabilir. Örneğin, "Java" kelimesini içeren ve 2019 yılında yayınlanmış olan kitapların listesini almak için aşağıdaki gibi bir sorgu yazabiliriz:

```{ $and: [ { $text: { $search: "Java" } }, { year: { $eq: 2019 } } ] }```

Bu sorgu, $and operatörü sayesinde iki sorguyu birleştirir. İlk sorgu $text operatörü ile "Java" kelimesini içeren metinleri döndürürken, ikinci sorgu "year" alanı 2019 olan belgeleri döndürür.

Text search sorguları, büyük ve karmaşık veritabanlarında arama yapmak için son derece yararlıdır. Ancak, sorguların doğru çalışması için, önce doğru şekilde indekslenmiş olması gereken verilerin indekslenmesi gerekmektedir. Aksi takdirde, text search sorguları çok yavaş çalışabilir ve verimliliği azaltabilir.


4. Sonuçların Alınması ve Filtrelenmesi

Sonuçların Alınması ve Filtrelenmesi

MongoDB'de text search sorgusu sonrası, sonuçlar bir dizi belge olarak döndürülür. Bu belgeler arasında arama sorgusuna en uygun olan en üstte yer alır ve diğer sonuçlar da buna göre sıralanır.

Sonuçların alınması için birkaç adım izlenebilir:

  • Kayıtların okunması: Bir iterator kullanarak belgelerde dolaşılabilir ve text search sorgusu sonucu elde edilen belgelere ulaşılabilir.
  • Filtreler: Sadece belirli özelliklere sahip belgelerin seçilmesi için filtreleme yapılabilir. Bu amaçla $match operatörü kullanılabilir.
  • Konum: Belirli bir konumdaki belgelerin seçilmesi isteniyorsa, $geoNear operatörü kullanılabilir.
  • Sıralama: Belirli bir özelliğe göre sıralama yapılabilir. Bu amaçla $sort operatörü kullanılabilir.

Ayrıca, sonuçların filtrelenmesi de mümkündür. Bunun için $aggregate operatörü kullanılabilir. Nesne ID'lerine göre gruplama yapılabilir ve buna göre sonuçlar sıralanabilir. Bu sayede, arama sorgusuna en yakın olan sonuçlar daha üstte görüntülenebilir.

$match $sort $group
Belirli bir özelliğe göre filtreleme yapar Belirli bir özelliğe göre sıralama yapar Nesneleri gruplar

Text search özelliği, MongoDB'de metin arama işlemini kolaylaştırır ve arama sonuçlarının filtrelenmesini mümkün kılar. Bu işlem sayesinde, MongoDB veritabanındaki bilgilerin daha hızlı ve doğru bir şekilde bulunmasına yardımcı olur.