aradaki "-" işareti gibi karakterler sözcük karakteri olarak değerlendirilmediği için kelime bölünüyor ve minimum karakter sınırına takılıyorsunuz. terimi çift tırnak içerisinde gönderebilirsiniz ama tam eşleşme dışında işe yaramaz.

şu sorguyu çalıştırarak limiti görebilirsiniz(muhtemelen 4'tür);
show variables like 'ft_min_word_len';
mysql ayarlarına müdahale edemiyorsanız; arama terimi için yeni bir kolon oluşturarak ya da halihazırdaki kolonu kullanarak, sözcüklerdeki özel karakterleri atın. örneğin veriyi; "4S-045-V" yerine "4S045V" olarak saklayın. arama terimini "4S-045-V" yerine "4S045V" şeklinde gönderin.

mysql ayarlarına müdahale edebiliyorsanız my.conf ya da my.ini dosyasından limiti değiştirin;
[mysqld]
ft_min_word_len=1
1. yol: arama terimini "4S-045-V" yerine "+4S +045 +V" şeklinde gönderin.

2. yol: sorguya şunu ekleyin;
HAVING search_keyword LIKE '%".$nrstring."%'
not: örneğiniz üzerinden gidiyorum; sorguları bu şekilde oluşturmayın, güvenli değil.