• 13-08-2022, 18:57:39
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    Bir web sitemizde fulltext search ile arama yaptırıyoruz.
    Genel olarak tüm aramalarda başarılı sonuçlara ulaşıyoruz ama arama kelimesinde "-" karakteri iki kez geçiyorsa arama sonuç vermiyor.
    Örnek;
    40110 - sonuç veriyor
    041059-V - sonuç veriyor
    4S-045-V - sonuç vermiyor


    Birden fazla yöntem denedim ama bununla ilgili bir yöntem bulamadım.
  • 14-08-2022, 01:53:46
    #2
    Sonuçlarda aratılan kelime nedir?
  • 14-08-2022, 11:42:11
    #3
    Arattığımız kelimeler aşağıdaki gibi;
    40110 - sonuç alıyoruz sorun yok
    041059-V - sonuç alıyoruz sorun yok
    4S-045-V - sonuç alamıyoruz, kayıt olmasına rağmen sonuç vermiyor
  • 15-08-2022, 10:44:42
    #4
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    Sonuçlarda aratılan kelime nedir?
    yani sadece kelime içerisinde 2 kez - geçtiğinde sonuç üretmiyor
  • 16-08-2022, 20:07:38
    #5
    sorgunu yazabilir misin hocam acaba ikinci - işaret sorguda bi açığa mı sebep oluyor.
  • 16-08-2022, 20:09:05
    #6
    omergunay adlı üyeden alıntı: mesajı görüntüle
    sorgunu yazabilir misin hocam acaba ikinci - işaret sorguda bi açığa mı sebep oluyor.
    $sth = $db->prepare(" SELECT * FROM products WHERE MATCH (search_keyword) AGAINST ('".$nrstring."' IN BOOLEAN MODE); group by original_no1,original_no2 " );



    Sorgum bu şekilde hocam
  • 17-08-2022, 03:57:19
    #7
    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.
  • 17-08-2022, 10:18:03
    #8
    ghergedan adlı üyeden alıntı: mesajı görüntüle
    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.


    Yanıtınız için çok teşekkür ederim, tüm yönergeleri uygulayıp sonucu paylaşacağım.