Ana Sayfa » *nix » MySQL Full-Text Search Minimum Length Limitini Değiştirmek

MySQL Full-Text Search Minimum Length Limitini Değiştirmek


BerbatKötüİdare EderGüzelHarika (Toplam 2 oy. 5 puan üzerinden ortalama 3,00 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYcFg1Cl' (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

Visited 721 times, 1 visit(s) today
Kategoriler: *nix,Mysql |

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


  1. TY | (Aralık 15th, 2012 4:04 am)

    Teşekkürler Abi.Siten çox hoşuma gitti ziyaret etcem.
    Kardeş Ölke Azərbaycandan sevgilerle.

    [Cevapla]

  2. samet | (Temmuz 17th, 2013 10:35 am)

    Faydalı ve kritik bir bilgi. Teşekkürler.

    [Cevapla]

Trackbacks

Yorumda bulunun.