• 23-01-2016, 09:33:48
    #1
    Üyeliği durduruldu
    Çalışan Kodum
    $al=mysql_query("SELECT * FROM ariza WHERE MATCH (baslik) AGAINST ('%$aranacak%' IN BOOLEAN MODE);");
    Çalışmayan hata veren kodum


    $al=mysql_query("SELECT * FROM ariza WHERE MATCH (baslik) AGAINST ('%$aranacak%' IN BOOLEAN MODE); ORDER BY hit desc LIMIT 5");
    Arkadaşlar birde phpmyadmin den aşağıdaki kodu çalıştırıyorum ama saltokunur hatası alıyorum

    SET GLOBAL ft_min_word_len= 1;
    php.ini ve my.cnf dosyalarına baktım bunu göremedim manuel değiştirmek için
    bu sorunu nasıl çözerim ?

    yardımlarınız için şimdiden teşekkürler.
  • 23-01-2016, 12:00:04
    #2
    Bekchy adlı üyeden alıntı: mesajı görüntüle
    Çalışan Kodum
    $al=mysql_query("SELECT * FROM ariza WHERE MATCH (baslik) AGAINST ('%$aranacak%' IN BOOLEAN MODE);");
    Çalışmayan hata veren kodum


    $al=mysql_query("SELECT * FROM ariza WHERE MATCH (baslik) AGAINST ('%$aranacak%' IN BOOLEAN MODE); ORDER BY hit desc LIMIT 5");
    Arkadaşlar birde phpmyadmin den aşağıdaki kodu çalıştırıyorum ama saltokunur hatası alıyorum

    SET GLOBAL ft_min_word_len= 1;
    php.ini ve my.cnf dosyalarına baktım bunu göremedim manuel değiştirmek için
    bu sorunu nasıl çözerim ?

    yardımlarınız için şimdiden teşekkürler.
    match kullandıktan sonra order by kullanmanızın nedeni ne ? match zaten alaka düzeyine göre sıralama yapar bundan dolayı order by boşa çıkar ? Mantığınızı anlatın ona göre yardımcı olmaya çalışalım

    Edit :

    order by daki hiti görmemiştim. Siz başlık alakasını sağlayıp hite göre sıralama yapmak istiyorsanız ya hiç match kullanmayın direk like ile çözüm üretin yada match kullanacaksanız sorgudan dönen içeriği bir diziye alıp diziyi short edin sonra bastırın. Biraz mantık hatası olmuş yazdığınız kodda.
  • 23-01-2016, 12:03:04
    #3
    Order by in onundeki noktali virgul u kaldir
  • 23-01-2016, 12:54:51
    #4
    Üyeliği durduruldu
    reddoc adlı üyeden alıntı: mesajı görüntüle
    Order by in onundeki noktali virgul u kaldir
    dediğini yaptım 5sonuç çıkıyor ama bu kezde in boolean devre dışı kalıyor sadece tek kelime buluyor

    yani örnek vermek gerekirse Opel yazınca her marka çıkıyor ama opel p0242 yazınca opel p0242 başlıklı konuyu en üste almıyor


    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    match kullandıktan sonra order by kullanmanızın nedeni ne ? match zaten alaka düzeyine göre sıralama yapar bundan dolayı order by boşa çıkar ? Mantığınızı anlatın ona göre yardımcı olmaya çalışalım

    Edit :

    order by daki hiti görmemiştim. Siz başlık alakasını sağlayıp hite göre sıralama yapmak istiyorsanız ya hiç match kullanmayın direk like ile çözüm üretin yada match kullanacaksanız sorgudan dönen içeriği bir diziye alıp diziyi short edin sonra bastırın. Biraz mantık hatası olmuş yazdığınız kodda.
    Limit kullanmamın gereği
    opel marka sında 1200 adet başlık var eğer hit e bağlı olarak ilk 5 i gösterirsen sayfada aşağılara inen saçma bir görüntü olmayacak

    teşekkürler.
  • 23-01-2016, 13:01:24
    #5
    Bekchy adlı üyeden alıntı: mesajı görüntüle
    dediğini yaptım 5sonuç çıkıyor ama bu kezde in boolean devre dışı kalıyor sadece tek kelime buluyor

    yani örnek vermek gerekirse Opel yazınca her marka çıkıyor ama opel p0242 yazınca opel p0242 başlıklı konuyu en üste almıyor




    Limit kullanmamın gereği
    opel marka sında 1200 adet başlık var eğer hit e bağlı olarak ilk 5 i gösterirsen sayfada aşağılara inen saçma bir görüntü olmayacak

    teşekkürler.
    Ben limit kullanmayın demedim Order by ile match kullanımını bir arada kullanmanız hatalı , zaten match size alaka durumuna göre sıralama yapar.

    Örneğin ;

    Opel Astra 2012 Masrafsız
    Opel Kadet İçinde küfür dahi edilmedi
    Opel Vectra 2013 Masrafsız
    Opel Astra 2012 Temiz


    Gibi başlıklar da sıralam ;

    Opel Astra 2012 Masrafsız
    Opel Astra 2012 Temiz
    Opel Vectra 2013 Masrafsız
    Opel Kadet İçinde küfür dahi edilmedi

    şeklinde alaka düzeyine göre olur. Üstteki array'a alıp hite göre sırlayın dememdeki sebep bu , yok sorguyu genişletir illa hite göre sıralarım derseniz de ;

    SELECT pages.*,
    MATCH (head, body) AGAINST ('some words') AS relevance,
    MATCH (head) AGAINST ('some words') AS title_relevance
    FROM pages
    WHERE MATCH (head, body) AGAINST ('some words')
    ORDER BY title_relevance DESC, relevance DESC

    şeklinde genişletilmiş bir sorgu kullanmanız lazım.

    Sizin için hangisi daha önemli önce onun kararını verin bence, alaka düzeyimi , hit sıralamasımı eğer hit sıralaması derseniz hiç fulltext search ile uğraşmayın like kullanın hite göre de sıralayıp geçin derim... Sizin amacınıza göre fulltext search optimizasyon konusunda sınıftakalır...
  • 23-01-2016, 13:20:15
    #6
    Üyeliği durduruldu
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    Ben limit kullanmayın demedim Order by ile match kullanımını bir arada kullanmanız hatalı , zaten match size alaka durumuna göre sıralama yapar.

    Örneğin ;

    Opel Astra 2012 Masrafsız
    Opel Kadet İçinde küfür dahi edilmedi
    Opel Vectra 2013 Masrafsız
    Opel Astra 2012 Temiz


    Gibi başlıklar da sıralam ;

    Opel Astra 2012 Masrafsız
    Opel Astra 2012 Temiz
    Opel Vectra 2013 Masrafsız
    Opel Kadet İçinde küfür dahi edilmedi

    şeklinde alaka düzeyine göre olur. Üstteki array'a alıp hite göre sırlayın dememdeki sebep bu , yok sorguyu genişletir illa hite göre sıralarım derseniz de ;

    SELECT pages.*,
    MATCH (head, body) AGAINST ('some words') AS relevance,
    MATCH (head) AGAINST ('some words') AS title_relevance
    FROM pages
    WHERE MATCH (head, body) AGAINST ('some words')
    ORDER BY title_relevance DESC, relevance DESC

    şeklinde genişletilmiş bir sorgu kullanmanız lazım.

    Sizin için hangisi daha önemli önce onun kararını verin bence, alaka düzeyimi , hit sıralamasımı eğer hit sıralaması derseniz hiç fulltext search ile uğraşmayın like kullanın hite göre de sıralayıp geçin derim... Sizin amacınıza göre fulltext search optimizasyon konusunda sınıftakalır...
    Değerli cevap ve uğraşın için teşekkürler lakin LIKE kullanmamamın sebebini açıklayayım ilk önce müşteri "OPEL P242 Arıza Kodu" yazdığında sonuç çıkacaktır ama başlık taki sırasal dizilişe aykırı bir sorgu sorarsa kod çalışmaz örneğin "P242 arıza kodu Opel" yazarsa kod çalışmaz bu yüzde in boolean kullanıyorum

    2. vermiş olduğun kodu tam anlayamadım biraz inceliyip deneyeceğim inşallah başarılı olurum teşekkürler.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:20:15 -->-> Daha önceki mesaj 13:17:43 --

    2. verdiğin kod mysqlde birden fazla sütunda sorgu yapmak için, tek sütunda sorgu yaparsam benim kodla aynı işlevi görecek ama yine sayfadaki aşağılara inen saçma görüntü kalkmayacak
  • 23-01-2016, 13:27:06
    #7
    Bekchy adlı üyeden alıntı: mesajı görüntüle
    Değerli cevap ve uğraşın için teşekkürler lakin LIKE kullanmamamın sebebini açıklayayım ilk önce müşteri "OPEL P242 Arıza Kodu" yazdığında sonuç çıkacaktır ama başlık taki sırasal dizilişe aykırı bir sorgu sorarsa kod çalışmaz örneğin "P242 arıza kodu Opel" yazarsa kod çalışmaz bu yüzde in boolean kullanıyorum

    2. vermiş olduğun kodu tam anlayamadım biraz inceliyip deneyeceğim inşallah başarılı olurum teşekkürler.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 13:20:15 -->-> Daha önceki mesaj 13:17:43 --

    2. verdiğin kod mysqlde birden fazla sütunda sorgu yapmak için, tek sütunda sorgu yaparsam benim kodla aynı işlevi görecek ama yine sayfadaki aşağılara inen saçma görüntü kalkmayacak


    Ben sorunun başlığına tam dikkat etmemişim Siz limitlemek mi istiyorsunuz ? Order by ile sıralamak mı ?

    eğer sadece limitlemek istiyorsanız order by kullanmadan limit kullanın

    $al=mysql_query("SELECT * FROM ariza WHERE MATCH (baslik) AGAINST ('%$aranacak%' IN BOOLEAN MODE) LIMIT 0,5");

    gibi ?
  • 23-01-2016, 13:33:02
    #8
    Üyeliği durduruldu
    evet @reddoc arkadaşın verdiği gibi sadece limit kullanınca istediğim sonucu hemen hemen aldım sayılır, senin verdiğin kodda aynısı tek sorun order by hit i algılamaması ama şimdilik bukadarıda işimi görür tek sorun ft_min_word_len kaldı onuda halledersem birşey kalmicak inşallah bu arada yardımlar için teşekkürler