İçeriğe git
Index type text does not support collation

Mongodb Index type ‘text’ does not support collation Hatası

Gökhan Duman

Mongodb ile kullanırken sorgularımızı hızlandırmak, text araması yapmak gibi nedenlerden dolayı indeksleme yapmayı tercih ederiz. Gel gelelim locale ayarlarının Türkçe olması gibi bazı durumlar sorun çıkarabilir ve bunun sonucunda Index type ‘text’ does not support collation hatası alabiliriz.

Index type ‘text’ does not support collation Hatası Nedir?

Mongodb ile çalışırken Index type ‘text’ does not support collation hatasını collation dediğimiz ek – özelleştirme ayarlarındaki uyumsuzluktan dolayı alırız. Söz gelimi ben bu hatayı veritabanı dilini Türkçe yapıp full text search için text index yaparken aldım.

Index type ‘text’ does not support collation Hatasının Çözümü

Hatayı çözmek için collation ayarlarını düzenleyebiliriz. Bunu yapmanın en kolay yolu MongoDb Compass kullanmaktır. Benim gibi sadece gerekli olduğunda backend ve db kısımları ile uğraşanlar için arayüzden düzenlemeler yapmak daha makul olacaktır.

MongoDb Compass uygulamasına connection string ile veri tabanı kullanıcısı olarak rahatça bağlanabilirsiniz.

İndex oluşturma senaryomuzdan devam edelim. MongoDb Compass uygulaması ile veritabanında herhangi bir collection’u seçip index oluşturabilirsiniz.

mongo db create index
mongo db create index

CREATE INDEX butonuna tıkladığımızda karşımıza index oluşturma ekranı çıkacaktır. Burada birden fazla alanı seçebilir, indeksimizi isimlendirebiliriz.

mongo db create index
mongo db create index

Bu aşamada veritabanı dilim Türkçe olduğu için index oluştururken Index type ‘text’ does not support collation hatası alacağım.

Index type text does not support collation
Index type text does not support collation

Aslında hata mesajını dikkatli incelersek hataya sebep olan collation ayarlarını yazdığını görürüz. Bunlardan ilk olarak locale kısmını düzeltelim. Bunun için Options kısmından Use Custom Collation kısmını aktif etmemiz gerekmektedir. Bu kısımda locale, strength, caseLevel, caseFirst gibi bir sürü özelleştirme bulunmaktadır.

Ben asıl sorunun locale olduğunu düşündüğüm için onu değiştirmekle işe başladım. tr, tr-search ve İngilizce dillerini denedim. Fakat hata devam etti. Gözüme dil seçenekleri arasında simple çarptı. Yerelleştirme kısmını simple yaptığımda sorun çözüldü.

Index type text does not support collation
mongodb collation options

Bu özelleştirmenin metin araması üzerinde olumsuz etkileri olup olmadığı konusunda fikrim yok. Her halükarda indeks oluşturamamaktan daha kötü olamayacağını düşünüyorum.

Benim senaryomda dili simple olarak seçtikten sonra CREATE INDEX düğmesine tıklayıp index oluşturabildim. Bundan hareketle Index type ‘text’ does not support collation hatasının sorun yaratan collation değerini bulup değiştirerek çözülebileceğini düşünüyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir