MySQL Full-Text Search Minimum Length Limitini Değiştirmek
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY4mzoR1' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
MySQL’in fulltext özelliği default olarak 4 ya da daha çok karakterden oluşan kelimeleri indexliyor. Bu durum full-text aramalarında 3 harften oluşan kelimeler için herhangi bir sonuç dönmemesine neden olabiliyor. Örnek olarak “ssh” ya da “php” gibi 3 harften oluşan sorgular gönderdiğiniz zaman herhangi bir sonuç alamayabiliyorsunuz.
Bu durumun önüne geçmek üzere MyISAM tablolar için kullanılabilecek “ft_min_word_len” isimli bir sistem değişken mevcut. my.cnf dosyasına eklenen bu değişken ile fulltext’e minimum kaç karakterin dahil edileceğini söyleyebilyorsunuz. Örnek olarak bu değeri 3 olarak set etmek ve varolan bir index’i bu değişikliğe göre rebuild etmek için aşağıdaki adımları izleyebilirsiniz:
my.cnf dosyasını editleyin. (Bu dosya genelde /etc altında bulunmaktadır.)
# vi /etc/my.cnf
Dosyanın [mysqld] isimli bölümüne aşağıdaki değişkeni ekleyin:
[mysqld] ft_min_word_len=3
Bu işlemden sonra MySQL servisinin yeniden başlatılması gerekiyor:
# /etc/init.d/mysqld restart
Şimdi min length değerini kontrol ederseniz 3 olduğunu görebilirsiniz:
mysql> show variables like 'ft_min_word_len'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | ft_min_word_len | 3 | +-----------------+-------+ 1 row in set (0.00 sec)
Bu şekilde artık yeni kayıtlar için index minimum 3 karakter olacak şekilde düzenlenecektir ancak eski kayıtların da güncellenmesi için index’in rebuild edilmesi gerekmektedir. Bu işin en kolay yolu ise ilgili tablo üzerinde quick repair işlemi yapmaktır.
Örnek olarak testdb isimli database’in deneme isimli tablosunda index olduğunu düşünürsek rebuild işlemi için aşağıdaki komutu kullanabiliriz:
mysql> use testdb; mysql> REPAIR TABLE deneme QUICK;
Bu şekilde işlem tamamlanmış oluyor.
Daha detaylı bilgi için aşağıdaki linke göz atabilirsiniz:
http://dev.mysql.com/doc/refman/5.6/en/fulltext-fine-tuning.html
Bu yazılar da ilginizi çekebilir:
- MySQL Repair MyISAM Table – BozulmuşTabloların Onarılması
- MySQL Server Time Zone Değişikliği
- Mysql Replikasyon Yapılandırması
- Mysql Server İçin Root Şifresi Tanımlamak
- Komut Satırından MySQL Kullanıcısı Oluşturmak
Yorumlar
Trackbacks
Yorumda bulunun.
Teşekkürler Abi.Siten çox hoşuma gitti ziyaret etcem.
Kardeş Ölke Azərbaycandan sevgilerle.
[Cevapla]
Faydalı ve kritik bir bilgi. Teşekkürler.
[Cevapla]