Login   Register  
PHP Classes
elePHPant
Icontem

File: example/IFile_Mysql_Ex03_IndexManual.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Giampaolo Losito  >  IFile  >  example/IFile_Mysql_Ex03_IndexManual.php  >  Download  
File: example/IFile_Mysql_Ex03_IndexManual.php
Role: Example script
Content type: text/plain
Description: Example script
Class: IFile
Index and search documents using Lucene or MySQL
Author: By
Last change:
Date: 2013-11-21 08:11
Size: 3,246 bytes
 

Contents

Class file image Download
<?php 
/**
 * IFile framework
 * 
 * @category   IndexingFile
 * @package    ifile.example
 * @author        Giampaolo Losito, Antonio Di Girolomo
 * @copyright  2011-2013 isApp.it (www.isapp.it)
 * @license    GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
 * @version    1.2.1
 * 
 */ 
 
/**
 * This script is a example how to indexed documents manually with MySql
 * 
 * IMPORTANT:
 * For MySql is important define in the configuration (IFileConfig.xml)
 * Define Table name that IFile must used
 * The fields: name, path, filename as "Text":
 * 
   <table-name collation="utf8_general_ci">ifile_index_table</table-name>
   ...
   <zend-document>
        <fields>            
            <field name="name" type="Text" />
            <field name="path" type="Text" />
            <field name="filename" type="Text" />            
        </fields>        
    </zend-document>
 */ 
error_reporting(E_ALL);
/** require IFileFactory */
require_once '../IFileFactory.php';

// Create connection at MySql
// IFile works only with MySqli InterfaceĆ¹
// First to test, you must create "example_ifile_index" DB in the your MySql
$connection = @new mysqli('localhost''root''''example_ifile_index'3306);                    
if (
mysqli_connect_error()) {die(" - ".mysqli_connect_error()." - ");}

// try/catch
try {
    
// instance IFileFactory
    
$IFileFactory IFileFactory::getInstance();
    
// define mysqli interface
    
$ifile $IFileFactory->getIFileIndexing('mysqli'$connection);
    
    
// Text to index
    
$text "I try to indexing this text with IFile Framework.";
    
    
// You can use two process for index a document manually.    
    // 1. Use LuceneDataIndexBean: you can set the fields that IFile uses. 
    //    This object define the type of index of the fields automatically.
    // 
    // 2. Instance a Zend_Search_Lucene_Document and define manually the fields
    
    // 1. Exemple for use LuceneDataIndexBean:
    // require LuceneDataIndexBean
    
require_once '../adapter/beans/LuceneDataIndexBean.php';
    
// crea un'istanza di un oggeto LuceneDataIndexBean
    
$bean = new LuceneDataIndexBean();    
    
// setting the fields
    // the "body" fields is mandatory
    
$bean->setBody($text);
    
$bean->setCreated('15 November 2013');
    
$bean->setCreator('Giampaolo Losito, Antonio di Girolamo');
    
$bean->setKeywords("IFile, Lucene, MySql, Search Engine");
    
$bean->setModified("15 November 2013");
    
$bean->setSubject("Object of document");
    
$bean->setDescription("Descriptio of the document");
    
$bean->setTitle("Title of the document");
    
// get Zend_Search_Lucene_Document from bean
    
$doc $bean->getLuceneDocument();    
    
    
// 2. Exemple for use Zend_Search_Lucene_Document
    // $doc = new Zend_Search_Lucene_Document();
    // $doc->addField(Zend_Search_Lucene_Field::UnStored('body', $text));
    
    // custom field
    
$doc->addField(Zend_Search_Lucene_Field::Keyword('name'"Manually Document"));    
    
$doc->addField(Zend_Search_Lucene_Field::Keyword('key'md5($text)));
    
$doc->addField(Zend_Search_Lucene_Field::Keyword('category''mytest'));    
    
    
// add document to index
    
$doc $ifile->addDocument($doc);
    
// store document
    
$ifile->commit();

    echo 
"The document is correctly indexing<br />";
        
} catch (
Exception $e) {
    echo 
"Error: ".$e->getMessage();
}
?>