[Symfony 2] Installation et configuration de Zend Lucene

Symfony ne possède pas un moteur de recherche spécifique, comme pour la version 1, on peut intégrer le moteur de Zend Framework dans notre projet SF2. Zend Lucene est un portage du projet bien connu Java Lucene.

Sur la page de documentation de Zend Lucene, la bibliothèque est décrite comme suit:

… est un moteur de recherche de contenus principalement textuels écrit entièrement en PHP 5. Comme il stocke ses index sur le système de fichiers et qu’il ne requiert pas de base de données, il peut offrir des fonctionnalités de recherche à presque n’importe quel site écrit en PHP. Zend_Search_Lucene dispose des caractéristiques suivantes :

  • Ranked searching – les meilleurs résultats sont retournés en premier.
  • Plusieurs puissants types de requêtes : phrase, booléen, joker (wildcard), proximité, intervalle et bien d’autres.
  • Recherche par champ spécifique (par exemple titre, auteur, contenus)

Pour Intégrer Zend Lucene dans SF2, on va utiliser un bundle appelé : EWZSearchBundle

Installation

Il y a en générale 3 alternatives pour installer un bundle sous SF2.

Utilisation de bin/vendors

Si vous utilisez le bin/vendors méthode pour gérer vos bundles, ajoutez les entrées suivantes à la fin du fichier « debs » sous la racine de votre projet.

[EWZSearchBundle]

git=http://github.com/excelwebzone/EWZSearchBundle.git target=/bundles/EWZ/Bundle/SearchBundle

[Search]

git=http://github.com/excelwebzone/zend-search.git target=/zend-search

Aprés, Lancez l’instalation en utilisant la commande :

$ ./bin/vendors install
Installation des sous-modules

Si vous gérez vos bundles en tant que sous-modules, commancez alors de créer les dossiers necaissaire:

$ mkdir -pv vendor/zend-search/Zend
$ mkdir -pv vendor/bundles/EWZ/Bundle

Aprés, ajoutez les sous-modules nécessaires :

$ git submodule add git://github.com/excelwebzone/zend-search.git vendor/zend-search/Zend/Search
$ git submodule add git://github.com/excelwebzone/EWZSearchBundle.git vendor/bundles/EWZ/Bundle/SearchBundle
Installation manuelle

Pour certaines raisons, on fait record à l’installation manuelle des bundles. Elle est facile il suffit de télécharger les fichiers zippés des bundles et les décompressés sous vendor/zend-search/Zend/Search et vendor/bundles/EWZ/Bundle/SearchBundle

Configuration

La premiére méthode d’installation met à jour les fichiers app/autoload.php et app/AppKernel.php avec les paramértes necessaires, mais ça n’empeche pas que vous devez vérifier que les bundles installés sont bien configurés. Sinon vous devez ajouter les lignes suivantes à vos fichiers :

<?php
// app/autoload.php

$loader->registerNamespaces(array(
    // ...

    'Zend\\Search' => __DIR__.'/../vendor/zend-search/',
    'EWZ'          => __DIR__.'/../vendor/bundles',
));
<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...

        new EWZ\Bundle\SearchBundle\EWZSearchBundle(),
    );
}

Enfin, ajoutez la ligne suivante à votre fichier de configuration:

app/config/config.yml

ewz_search:
    analyzer: Zend\Search\Lucene\Analysis\Analyzer\Common\TextNum\CaseInsensitive
    path:     %kernel.root_dir%/cache/%kernel.environment%/lucene/index

Les fichiers d’indexation de lucene seront créés sous le dossier app/cache/, alors il faut faire attention si vous voulez vider le cache en environnement de production car tout les données seront supprimés. Si vous voulez modifier le dossier d’indexation, il suffit de changer la valeur de exz_serche.path dans app/config/config.yml

Le prochain article, va parler de l’utilisation de ce bundle.
Alors @+.

Advertisements

3 réflexions sur “[Symfony 2] Installation et configuration de Zend Lucene

  1. Pingback: [Symfony 2] Implémentation du moteur de recherche Zend Lucene | Mohammed Rhamnia Blog

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s