Développement d'applications web, Zend framework, iPhone, Mac os X et Wordpress

Zend Search Lucene : récupérer des données indexées

zend_search_lucene_recherche_de_donneesUne fois que nous avons créé un index, nous sommes prêt à utiliser zend search lucene pour effectuer une recherche dans notre site web. Dans notre exemple, le mot clé sera récupéré par la fonction getParam() de l’objet Zend Controller et utilisé pour récupéré des résultats pertinents dans les données déjà indexés.

Encore une fois le code suivant est dans un contexte MVC et utilise Zend_Application. L’inclusion des classes Zend est donc implicite.
Le paramètre reçu vient d’un formulaire de recherche (objet zend form). Voici le code d’une action qui affiche le résultat d’une recherche :

public function articlesAction()
{
    //Récupération du paramêtre
    $queryStr = $this->_getParam('r');
    $message = "";

    if(!isset($queryStr) || $queryStr == "")
    {
        $this->_helper->redirector('index');
    }

    // Ouverture de l'index
    $index = Zend_Search_Lucene::open(BASE_PATH . '/decryptages_index');

    // Execution de la requête et récupérations des résultats
    $results = $index->find($queryStr);
    $message = "L'index contient " . $index->count() . " document(s)";

    // Test si j'ai des résultats
    if($results)
    {
        $count = 0;
        $data = array();
        foreach($results as $result)
        {
            $data[$count]['slug'] = $result->slug;
            $data[$count]['id'] = $result->id;
            $data[$count]['dateCreation'] = $result->dateCreation;
            $data[$count]['titre'] = utf8_decode($result->titre);
            $data[$count]['chapeau'] = $result->chapeau;
            $data[$count]['categorie'] = $result->categorie;
            $count++;
        }

        $this->view->results = $data;
        $this->view->message = $message;
    }
}

Récupération du mot clé pour effectuer la recherche.
Initialisation d’une variable message que je passerai ensuite à la vue.
Je vérifie qu’il ne soit pas vide.

$queryStr = $this->_getParam('r');
$message = "";
<pre>if(!isset($queryStr) || $queryStr == "")
{
    $this->_helper->redirector('index');
}

Pour rechercher des données, je commence par ouvrir l’index en passant en paramètre le chemin du dossier.

$index = Zend_Search_Lucene::open(BASE_PATH . '/decryptages_index');

Nous utilisons ensuite la méthode find de Zend Search Lucene en lui passant le mot clé recherché.

$results = $index->find($queryStr);

La fonction count() permet quand à elle de retourner le nombre de document enregistrés dans l’index.

$index->count()

Pour finir, je teste si $results contient des résultats. Si oui j’initialise une variable $data qui contiendra chaque résultat. Dans le cas contraire je retourne un message qui indique qu’aucune donnée n’a été retournée.

if($results)
{
    $count = 0;
    $data = array();
    foreach($results as $result)
    {
        $data[$count]['slug'] = $result->slug;
        $data[$count]['id'] = $result->id;
        $data[$count]['dateCreation'] = $result->dateCreation;
        $data[$count]['titre'] = utf8_decode($result->titre);
        $data[$count]['chapeau'] = $result->chapeau;
        $data[$count]['categorie'] = $result->categorie;

        $count++;
    }
    $this->view->results = $data;
    $this->view->message = $message;
}
else
{
    $this->view->message = "Aucun résultat retourné.";
}

Le code de ma vue :


<h1>Résultats de notre recherche</h1>

message)) : ?>

message; ?>

results)) : ?>
    results as $result) : ?>

<a href="<?php echo $this->baseUrl() . &quot;/actualite/&quot; . $result[">' title=''></a>

Un exemple des résultats retournés lorsque je passe le paramètre « ouvrage » (/search/articles/r/ouvrage). données-zend-search-lucene

Zend Search Lucene : Création d’un index à partir de données stockées en base de données MySQL

Plugin flash manquant

Articles en relation :

  1. Zend Search Lucene : Création d’un index à partir de données stockées en base de données MySQL
  2. Zend Search Lucene : Indexation en temps réél
Cet article a été publié dans Zend Framework avec les mots-clefs : , , , . Bookmarker le permalien. Laisser un commentaire ou faire un trackback : URL de trackback.

Laisser un commentaire

Votre e-mail ne sera jamais publié ni communiqué. Les champs obligatoires sont indiqués par *

*
*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • Plugin flash manquant