Mongodb Index type ‘text’ does not support collation Hatası
Yazının İçeriği
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.
CREATE INDEX
butonuna tıkladığımızda karşımıza index oluşturma ekranı çıkacaktır. Burada birden fazla alanı seçebilir, indeksimizi isimlendirebiliriz.
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.
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ü.
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