verilerinizi mysqlde tutarken metin aramalarınız fazlalaştığında, başka çözümlere göz atmaya başlarsınız. mysql ilişkisel bir veritabanıdır sonuçta, ve full-text aramalarda yeteri kadar iyi performans vermeyecektir. işin içine uzun metinler ve karmaşık ilişkiler girdiğinde mysql size ayak bağı olmaya başlar, çünkü onun amacı farklıdır. metin aramaları için tasarlanmamıştır.bu çözümlerden en çok kullanılanlardan biri solr, apache’nin lucene librarysi üzerine konuşlandırılan, süper performanslı bir sunucu yazılımı. bu yazıda kısaca kurulumu ve php ile kullanımından bahsedeceğim.1. solr’ı şu adresten indirin. http://www.apache.org/dyn/closer.cgi/lucene/solr/2. zip dosyasını açın3. apache-solr-1.3.0/example/solr/conf/schema.xml dosyasını düzenleyin.
id


4. şurdan php librarysini indirin. http://code.google.com/p/solr-php-client/downloads/list5. solr ı çalıştırıncd solr/apache-solr-1.3.0/examplejava -jar start.jar
6. projenize dahil edin ve kullanın.ping() ) {echo ‘Solr calismiyor.’;exit;}// tum dokumanları siliyoruz.$solr->deleteByQuery(‘*:*’);// yeni dokuman ekliyoruz$objs = array();$objs[] = array(‘id’ => 1,’baslik’ => ‘birinci yazinin basligi’,’metin’ => ‘burada uzunca bir metin olmasi gerektigini dusunun’,’kategori’ => array(‘deneme’, ‘test’));$objs[] = array(‘id’ => 2,’baslik’ => ‘ikinci yazinin basligi’,’metin’ => ‘buda boyle bir yazi, burada da uzunca bir metin olmasi gerektigini dusunun’,’kategori’ => array(‘deneme’, ‘test’, ‘blah’));// bu objeleri solr a atiyoruz.$docs = array();foreach ($objs as $o){$doc = new Apache_Solr_Document();$doc->id = ;$doc->baslik = $o[‘baslik’];$doc->metin = $o[‘metin’];$doc->kategori = $o[‘kategori’];$docs[$doc->id] = $doc;}try {$solr->addDocuments( $documents );$solr->commit();$solr->optimize();} catch ( Exception $e ) {echo $e->getMessage();}// gonderdiklerimizi sorgulayalim…$offset = 0; $limit = 10;//$query = ‘baslik: metin’;$response = $solr->search( $query, $offset, $limit );// => [{‘id’=>1, ‘baslik’=>….}, {‘id’=>2, ‘baslik’=>….}];/*$query = ‘baslik: yazinin AND kategori: blah’;// => [{‘id’=>2, ‘baslik’=>….}];*/if ( $response->response->numFound > 0 ) {foreach ( $response->response->docs as $doc ) {echo “$doc->id $doc->title
“;}} else {echo ‘sonuc bulunamadi’;}
sorgularda, sonuçları sıralayabilir, istediğiniz bir aralık verebilir – örneğin tarih aralığı, fiyat aralığı gibi -, facet kullanabilirsiniz, ve milyonlarca döküman olsada çok hızlı yanıt alacağınızdan emin olabilirsiniz. client için sadece php değil, ruby, java, python, c#, javascript için librarylerde mevcut. sonuç olarak, performanslı bir metin arama motoruna ihtiyacınız varsa, solr kesinlikle tavsiye edebileceğim bir sunucu.konu hakkında daha fazla bilgi almak isterseniz, yorumlara ekleyebilirsiniz. ayrıca bkz, http://wiki.apache.org/solr/FrontPage