| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 19807 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.indexing">
- <title>Indexation</title>
- <para>
- L'indexation s'effectue en ajoutant un nouveau document à un index existant ou à un nouvel
- index :
- </para>
- <programlisting language="php"><![CDATA[
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Il y a deux manières de créer un objet document. La première est de le faire manuellement.
- </para>
- <example id="learning.lucene.indexing.doc-creation">
- <title>Construction manuel de document</title>
- <programlisting language="php"><![CDATA[
- $doc = new Zend_Search_Lucene_Document();
- $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
- $doc->addField(Zend_Search_Lucene_Field::Text('title', $docTitle));
- $doc->addField(Zend_Search_Lucene_Field::unStored('contents', $docBody));
- $doc->addField(Zend_Search_Lucene_Field::binary('avatar', $avatarData));
- ]]></programlisting>
- </example>
- <para>
- La seconde méthode est de le charger depuis un fichier <acronym>HTML</acronym>
- ou Microsoft Office 2007 :
- </para>
- <example id="learning.lucene.indexing.doc-loading">
- <title>Chargement de document</title>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
- $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($path);
- $doc = Zend_Search_Lucene_Document_Pptx::loadPptFile($path);
- $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($path);
- ]]></programlisting>
- </example>
- <para>
- Si un document est chargé depuis l'un des formats supportés, il peut quand même être étendu
- manuellement avec des champs définis par l'utilisateur.
- </para>
- <sect2 id="learning.lucene.indexing.policy">
- <title>Politique d'indexation</title>
- <para>
- Vous devrez définir votre politique d'indexation au sein de la conception de
- l'architecture de votre application.
- </para>
- <para>
- Vous pourriez avoir besoin d'une configuration d'indexation à la demande
- (quelque chose comme le système <acronym>OLTP</acronym>).
- Sur de test systèmes, vous ajoutez généralement un document par requête utilisateur.
- De cette manière, l'option <emphasis>MaxBufferedDocs</emphasis> n'affectera pas le
- système. D'un autre coté, <emphasis>MaxMergeDocs</emphasis> est vraiment utile, car il
- vous permet de limiter le temps d'exécution maximum du script.
- <emphasis>MergeFactor</emphasis> doit être définis par une valeur qui conserve un
- équilibre entre le temps moyen d'indexation (il est aussi affecté par temps
- d'optimisation moyen) et les performance de recherche (le niveau d'optimisation dépend
- du nombre de segments).
- </para>
- <para>
- Si vous allez surtout effectuer des mises à jour d'index par lot, votre configuration
- devrait utiliser une option <emphasis>MaxBufferedDocs</emphasis> définis à la valeur
- maximum supporté par la quantité de mémoire disponible.
- <emphasis>MaxMergeDocs</emphasis> et <emphasis>MergeFactor</emphasis> doivent être
- définis à des valeurs réduisant au maximum le recours à l'auto-optimisation
- <footnote><para>Une limite additionnelle est le nombre maximum de gestionnaire de
- fichiers supporter par le système d'exploitation pour les opérations concurrente
- d'ouverture</para></footnote>. Les optimisations complètes d'index doivent être
- appliquées après l'indexation.
- </para>
- <example id="learning.lucene.indexing.optimization">
- <title>Optimisation d'index</title>
- <programlisting language="php"><![CDATA[
- $index->optimize();
- ]]></programlisting>
- </example>
- <para>
- Dans certaines configuration, il est plus efficace d'effectuer une série de mise à jour
- de l'index en organisant une file de requête de mise à jour et de traiter plusieurs
- requête de mise à jour dans une seule exécution de script. Ceci réduit la charge
- d'ouverture de l'index et permet d'utiliser le tampon de document de l'index.
- </para>
- </sect2>
- </sect1>
|