Zend Framework : Zend_Search_Lucene – Content Indexing
Lucene adalah indexing dan retrieval library yang awalnya didevelop di teknologi Java, dan disupport oleh Apache Software Foundation. Ketika data sudah terindex dalam sistem file, maka tidak membutuhkan database server. Zend_Search_Lucene adalah salah satu komponen dari Zend Framework yang mengimplementasikan teknologi ini. Zend_Search_Lucene support beberapa fitur :
1. Perangkingan hasil pencarian
2. Powerful query types : boolean, wildcard, phrase queries
3. pencarian dengan field spesifik
Ok, let’s go to example :
Anggaplah kita mempunyai data artikel yang akan kita simpan di index file sistem kita. Kita mempunyai controller yang memanggil komponen Zend_Search_Lucene sebagai berikut :
class TestluceneController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
$this->indexPath = APPLICATION_PATH.'/indexsearch/index';
}
}
Dalam function init, kita deklarasikan path tempat menyimpan index kita. Kalau sudah, kita buat action untuk meng-index data dari database, semisal sebagai berikut :
//...................
public function reindexAction()
{
// action body
//just SAMPLE , access to db
// ( in your REAL DEVELOPMENT, access to db is only in model ) !!!!
//asumption , 'db' is already registered in registry !!!
$db = Zend_Registry::get('db');
$fetch = $db->query("select * from articles")->fetchAll();
$index = Zend_Search_Lucene::create($this->indexPath);
foreach($fetch as $key=>$row)
{
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('title', $row['title']));
$doc->addField(Zend_Search_Lucene_Field::UnStored('content', $row['content'] ));
$index->addDocument($doc);
echo 'Added ' . $row['title'] . ' to index.
';
}
//optimize index...
$index->optimize();
die;
}
//................................
Nah, action reindexAction kita jalankan dulu sebelum mencoba melakukan pencarian data. Kalau sudah, tinggal kita test deh :
//.......Pencarian data yang sudah terindex.
public function searchAction()
{
$data = array();
// If a search_query parameter has been posted, search the index.
$indexopen = Zend_Search_Lucene::open($this->indexPath);
// Get results.
$data = $indexopen->find('"PHP framework" AND "Zend Framework"');
foreach($data as $key=>$row)
{
echo $row->title; echo "<br>";
}
die;
}
//......................
Okeey, semoga bermanfaat ![]()
Referensi :
http://www.slideshare.net/shahar/content-indexing-with-zendsearchlucene
http://www.andrewrowland.com/article/display/using-zend-search-lucene-part-2
http://framework.zend.com/apidoc/1.0/Zend_Search_Lucene/Document/Zend_Search_Lucene_Document.html
http://framework.zend.com/manual/en/zend.search.lucene.overview.html
sip bagus sekali, sya jadi faham..terima kasih tutorialnya…