folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Php'de Like Haricinde Nasıl Arama Yaptırabilirim?



Php'de Like Haricinde Nasıl Arama Yaptırabilirim?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    aşağıdaki gibi bir sorgu çalıştırıyorum. takdir edersinizki çok yavaş gerçekleşiyor ve cpu kullanımının ırzına geçiyor. bunu daha performanslı hale nasıl getirebilirim. şimdi fulltext search olayı varmış. bir satırlık sorguyla tablona yeni sıralayıcı ekliyormuşsun. fakat bu şekilde id sütunu sıralayıcı özelliğini kaybeder mi? wordpress üzerinde çalışıyorum 500mb'lık bir sql'im var, yedeğim de var; fakat upload olayı çok zaman alıyor. tecrübesi olanlar fikir verebilir mi? tablodaki kayıt sayısı 286 bin.

    $sqlarama = mysql_query("select ID,post_content,guid from wp_posts where id NOT IN ('$ID') AND kontrol=0 AND post_status='publish' AND post_content like '% $arama%' limit 10");


    ..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    FTS özelliği primary key'in sıralayıcı özelliğini engellemez.

    Ancak wordpress innodb kullanmıyordu diye hatırlıyorum. O yüzden FTS özelliğini kullanmazasın.

    Aslında bu işler için en iyi seçenek, lucence ya da spinx gibi bu işlere özel yazılımlar kurmak  ve kullanmak.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek
    DrKill bunu yazdı

    FTS özelliği primary key'in sıralayıcı özelliğini engellemez.

    Ancak wordpress innodb kullanmıyordu diye hatırlıyorum. O yüzden FTS özelliğini kullanmazasın.

    Aslında bu işler için en iyi seçenek, lucence ya da spinx gibi bu işlere özel yazılımlar kurmak  ve kullanmak.

    valla hocam bir şekilde çözüm bulmam lazım. arama yaptırıp işlem yaptırıyorum ama bu şekilde işlemin tamamlanması için 5 yıl geçmesi gerekiyor. şunu 1 haftaya indirmem lazım :D


    ..
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    lepusmorris bunu yazdı
    DrKill bunu yazdı

    FTS özelliği primary key'in sıralayıcı özelliğini engellemez.

    Ancak wordpress innodb kullanmıyordu diye hatırlıyorum. O yüzden FTS özelliğini kullanmazasın.

    Aslında bu işler için en iyi seçenek, lucence ya da spinx gibi bu işlere özel yazılımlar kurmak  ve kullanmak.

    valla hocam bir şekilde çözüm bulmam lazım. arama yaptırıp işlem yaptırıyorum ama bu şekilde işlemin tamamlanması için 5 yıl geçmesi gerekiyor. şunu 1 haftaya indirmem lazım :D

    2-3 sn dede bulursun. O zaman sana http://sphinxsearch.com/

    diyorum.

     

    ya da

    https://lucene.apache.org/core/

     

    EĞER KOMPLE MYSQL çözümü yapmak istiyorsan (genede önermiyorum bir lucene veya sphinx kadar hızlı OLAMAZ!) tavsiyelerimi dinle:

     

    NOT IN deki $ID çok fazla id içeriyorsa (12,54,46,78......) kesinlike NOT IN kullanma. Mümkünse inner join kullan

    post_status ve kontrol gibi sütunları indexle

    engine olarak innoDB kullan ve post_content a FTS özelliğini etkinleştir.

    Aramaları FTS arama komutlarıyla yap örnek:

    SELECT COUNT(*) FROM post_content WHERE MATCH($arama);

     

     

    MYSQL den yeterince performans alamazsan MARIADB yi çok övüyorlar ona geçebilirsin. Zaten hiçbir şeyini değiştirmene gerek yok mariaDB mysql ile %100 uyumlu. Vikipedia gibi bir çok büyük kuruluş MARIADB ye geçti.

    ORACLE MYSQL i skip atıyor. Yani harbiden skip atıyor. OpenSource code paylaşımcılarının kodlarını felan hiç siklemiyor. MYSQL oracle'ın geliştirdiği kadarıyla gelişiyor ne yazık ki.

    DrKill tarafından 04/Eyl/15 16:00 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek
    DrKill bunu yazdı
    lepusmorris bunu yazdı
    DrKill bunu yazdı

    FTS özelliği primary key'in sıralayıcı özelliğini engellemez.

    Ancak wordpress innodb kullanmıyordu diye hatırlıyorum. O yüzden FTS özelliğini kullanmazasın.

    Aslında bu işler için en iyi seçenek, lucence ya da spinx gibi bu işlere özel yazılımlar kurmak  ve kullanmak.

    valla hocam bir şekilde çözüm bulmam lazım. arama yaptırıp işlem yaptırıyorum ama bu şekilde işlemin tamamlanması için 5 yıl geçmesi gerekiyor. şunu 1 haftaya indirmem lazım :D

    2-3 sn dede bulursun. O zaman sana http://sphinxsearch.com/

    diyorum.

     

    ya da

    https://lucene.apache.org/core/

     

    EĞER KOMPLE MYSQL çözümü yapmak istiyorsan (genede önermiyorum bir lucene veya sphinx kadar hızlı OLAMAZ!) tavsiyelerimi dinle:

     

    NOT IN deki $ID çok fazla id içeriyorsa (12,54,46,78......) kesinlike NOT IN kullanma. Mümkünse inner join kullan

    post_status ve kontrol gibi sütunları indexle

    engine olarak innoDB kullan ve post_content a FTS özelliğini etkinleştir.

    Aramaları FTS arama komutlarıyla yap örnek:

    SELECT COUNT(*) FROM post_content WHERE MATCH($arama);

     

     

    MYSQL den yeterince performans alamazsan MARIADB yi çok övüyorlar ona geçebilirsin. Zaten hiçbir şeyini değiştirmene gerek yok mariaDB mysql ile %100 uyumlu. Vikipedia gibi bir çok büyük kuruluş MARIADB ye geçti.

    ORACLE MYSQL i skip atıyor. Yani harbiden skip atıyor. OpenSource code paylaşımcılarının kodlarını felan hiç siklemiyor. MYSQL oracle'ın geliştirdiği kadarıyla gelişiyor ne yazık ki.

    teşekkür ederim hocam. şimdi hosting kullanıyorum. sphinx'in hosting için dökümanlarını inceliyorum ama büyük ihtimal 2. söylediklerini kullanabilirim. bir de fts, innodb de çalışmıyor diye okumuştum. demek yanlış bilgiymiş.


    ..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    lepusmorris bunu yazdı
     

    teşekkür ederim hocam. şimdi hosting kullanıyorum. sphinx'in hosting için dökümanlarını inceliyorum ama büyük ihtimal 2. söylediklerini kullanabilirim. bir de fts, innodb de çalışmıyor diye okumuştum. demek yanlış bilgiymiş.

    Mysql'in mağradan kalma bir sürümünü kullanıyorsan çalışmaz tabi.

     

    https://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ccaglayan
    Ccaglayan's avatar
    Kayıt Tarihi: 23/Kasım/2011
    Erkek

    Önerim imkan varsa verileri solr a atman ve oradan arama yaptırmandır misal şuan yaklaşık 2milyon verinin 150gb kadar alan kaplayan veri içinde arabalarımız solr üzerinden yapıyoruz hiç sorun çıkarmıyor üstelik pivot bile alınırken 

    Ekleme: wordpress in solr eklentisi var işinide kolaylaştırır sadece schema oluşturmada biraz zorlanabilirsin ama dökümanı boldur. 

    Ccaglayan tarafından 04/Eyl/15 18:03 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    şuan önerileri denemiş bulunmaktayım ve bu fulltext search olayı ne kadar manyak bişeymiş. ağlamak istiyorum sayın seyirciler :D

    yalnız tam eşleşen kelimeleri buldurtamıyorum ve şu "IN BOOLEAN MODE" nedir ne işe yarar çözemedim. kaynakları taradım çift tırnak arasına almamısöylüyolar ama yedirtemiyorum bir türlü. örnek sorgum;

    $arama = mysql_query("SELECT ID,guid FROM wp_posts WHERE MATCH(post_content) AGAINST ('Ben Her Bahar Aşık Olurum' IN BOOLEAN MODE) AND kontrol=1");

     

    bu arada ruh halim (temsili):

    https://www.youtube.com/watch?v=hPyUE7qZofc

     

    lepusmorris tarafından 06/Eyl/15 06:50 tarihinde düzenlenmiştir

    ..
Toplam Hit: 1001 Toplam Mesaj: 8
php mysql fulltext search