| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.intro">
- <title>Introduction à Zend_Search_Lucene</title>
- <para>
- Le composant <classname>Zend_Search_Lucene</classname> est prévu pour fournir une
- solution de recherche full-text prête à l'emploi. Il ne nécessite aucunes extensions
- <acronym>PHP</acronym><footnote><para>Bien que quelques fonctionnalités de traitement
- <acronym>UTF-8</acronym> nécessitent que l'extension
- <emphasis>mbstring</emphasis> soit activée
- </para></footnote> ni que des logiciels supplémentaires soient installés, et peut
- être utilisé tout de suite après l'installation du Framework Zend.
- </para>
- <para>
- <classname>Zend_Search_Lucene</classname> est un portage <acronym>PHP</acronym> du
- moteur de recherche full-text open source populaire connu comme Apache Lucene. Voir <ulink
- url="http://lucene.apache.org">http://lucene.apache.org/</ulink> pour plus de détails.
- </para>
- <para>
- L'information doit être indexée pour être disponible à la recherche.
- <classname>Zend_Search_Lucene</classname> et Java Lucene utilise un concept de document
- connu sous le nom d'"indexation atomique d'élément."
- </para>
- <para>
- Chaque document est un ensemble de champs : paires <nom, valeur> où le nom et la
- valeur sont des chaînes <acronym>UTF-8</acronym> <footnote><para>Les chaînes Binaires sont
- aussi autorisées pour être utilisées comme des valeurs de champs</para></footnote>.
- N'importe quel sous ensemble de champs de document peut être marqué comme "indexé"
- pour inclure des données de champ durant le processus d'indexation de texte.
- </para>
- <para>
- Les valeurs de champs peuvent être indexées segmentées durant l'indexation. Si un champ
- n'est pas segmenté, alors la valeur du champ est stockée comme un seul terme ; autrement,
- l'analyseur courant est utilisé pour la segmentation.
- </para>
- <para>
- Plusieurs analyseurs sont fournis dans le paquet <classname>Zend_Search_Lucene</classname>.
- L'analyseur par défaut fonctionne avec du texte <acronym>ASCII</acronym> (comme l'analyseur
- <acronym>UTF-8</acronym> a besoin que l'extension <emphasis>mbstring</emphasis> soit activée).
- Il n'est pas sensible à la case, et saute les nombres. Utilisez d'autres analyseurs ou
- créez votre propre analyseur si vous avez besoin de changer ce comportement.
- </para>
- <note>
- <title>Utilisation des analyseurs durant l'indexation et la recherche</title>
- <para>
- Note importante ! Les requêtes de recherches sont aussi segmentées en utilisant
- "l'analyseur courant", ainsi le même analyseur doit être défini par défaut durant
- le processus d'indexation et le processus de recherche. Ceci garantira que la source
- et le texte recherché seront transformés en termes de la même manière.
- </para>
- </note>
- <para>
- Les valeurs de champs sont stockés optionnellement au sein de l'index. Ceci permet aux
- données originale du champ d'être récupérée pendant la recherche. C'est le seul moyen
- d'associer les résultats de recherche avec les données originales (l'ID interne du
- document peut avoir changé après une optimisation d'index ou une auto-optimisation).
- </para>
- <para>
- Ce qui doit être gardé en mémoire, c'est que l'index Lucene n'est pas une base de données.
- Il ne fournit pas un mécanisme de sauvegarde de l'index à l'exception de la sauvegarde
- du répertoire du système de fichier. Il ne fournit pas de mécanisme transactionnel bien
- que soient supportés la mise à jour concurrente d'index ainsi que que la mise à jour
- et la lecture concurrente. Il n'est pas comparable aux bases de données en terme de
- vitesse de récupération de données.
- </para>
- <para>
- Donc c'est une bonne idée :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>De ne pas</emphasis> utiliser l'index Lucene comme du stockage car cela
- réduirait les performance de récupération de résultat de recherche. Stocker
- uniquement les identifiants de documents (chemin de documents,
- <acronym>URL</acronym>s, identifiant unique de base données) et associer les
- données au sein de l'index. Ex. titre, annotation, categorie, information de langue,
- avatar. (Note : un champs peut être inclu dans l'indexation, mais pas stocké, ou
- stocké, mais pas indexé).
- </para>
- </listitem>
- <listitem>
- <para>
- D'écrire des fonctionalités qui peuvent reconstruire intégralement l'index, si il
- a été corrompu pour une raison ou pour une autre.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Les documents individuels dans l'index peuvent avoir des ensemble de champs totalement
- différents. Le même champ dans différents documents n'a pas besoin d'avoir les mêmes
- attributs. Ex. un champs peu être indexé pour l'un des documents mais sauté pour
- l'indexation d'un autre. Le même principe s'applique au stockage, à la segmentation,
- ou traitement de valeur de champ comme chaîne binaire.
- </para>
- </sect1>
|