| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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>
|