lucene-intro.xml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.lucene.intro">
  5. <title>Introduction à Zend_Search_Lucene</title>
  6. <para>
  7. Le composant <classname>Zend_Search_Lucene</classname> est prévu pour fournir une
  8. solution de recherche full-text prête à l'emploi. Il ne nécessite aucunes extensions
  9. <acronym>PHP</acronym><footnote><para>Bien que quelques fonctionnalités de traitement
  10. <acronym>UTF-8</acronym> nécessitent que l'extension
  11. <emphasis>mbstring</emphasis> soit activée
  12. </para></footnote> ni que des logiciels supplémentaires soient installés, et peut
  13. être utilisé tout de suite après l'installation du Framework Zend.
  14. </para>
  15. <para>
  16. <classname>Zend_Search_Lucene</classname> est un portage <acronym>PHP</acronym> du
  17. moteur de recherche full-text open source populaire connu comme Apache Lucene. Voir <ulink
  18. url="http://lucene.apache.org">http://lucene.apache.org/</ulink> pour plus de détails.
  19. </para>
  20. <para>
  21. L'information doit être indexée pour être disponible à la recherche.
  22. <classname>Zend_Search_Lucene</classname> et Java Lucene utilise un concept de document
  23. connu sous le nom d'"indexation atomique d'élément."
  24. </para>
  25. <para>
  26. Chaque document est un ensemble de champs : paires &lt;nom, valeur&gt; où le nom et la
  27. valeur sont des chaînes <acronym>UTF-8</acronym> <footnote><para>Les chaînes Binaires sont
  28. aussi autorisées pour être utilisées comme des valeurs de champs</para></footnote>.
  29. N'importe quel sous ensemble de champs de document peut être marqué comme "indexé"
  30. pour inclure des données de champ durant le processus d'indexation de texte.
  31. </para>
  32. <para>
  33. Les valeurs de champs peuvent être indexées segmentées durant l'indexation. Si un champ
  34. n'est pas segmenté, alors la valeur du champ est stockée comme un seul terme ; autrement,
  35. l'analyseur courant est utilisé pour la segmentation.
  36. </para>
  37. <para>
  38. Plusieurs analyseurs sont fournis dans le paquet <classname>Zend_Search_Lucene</classname>.
  39. L'analyseur par défaut fonctionne avec du texte <acronym>ASCII</acronym> (comme l'analyseur
  40. <acronym>UTF-8</acronym> a besoin que l'extension <emphasis>mbstring</emphasis> soit activée).
  41. Il n'est pas sensible à la case, et saute les nombres. Utilisez d'autres analyseurs ou
  42. créez votre propre analyseur si vous avez besoin de changer ce comportement.
  43. </para>
  44. <note>
  45. <title>Utilisation des analyseurs durant l'indexation et la recherche</title>
  46. <para>
  47. Note importante ! Les requêtes de recherches sont aussi segmentées en utilisant
  48. "l'analyseur courant", ainsi le même analyseur doit être défini par défaut durant
  49. le processus d'indexation et le processus de recherche. Ceci garantira que la source
  50. et le texte recherché seront transformés en termes de la même manière.
  51. </para>
  52. </note>
  53. <para>
  54. Les valeurs de champs sont stockés optionnellement au sein de l'index. Ceci permet aux
  55. données originale du champ d'être récupérée pendant la recherche. C'est le seul moyen
  56. d'associer les résultats de recherche avec les données originales (l'ID interne du
  57. document peut avoir changé après une optimisation d'index ou une auto-optimisation).
  58. </para>
  59. <para>
  60. Ce qui doit être gardé en mémoire, c'est que l'index Lucene n'est pas une base de données.
  61. Il ne fournit pas un mécanisme de sauvegarde de l'index à l'exception de la sauvegarde
  62. du répertoire du système de fichier. Il ne fournit pas de mécanisme transactionnel bien
  63. que soient supportés la mise à jour concurrente d'index ainsi que que la mise à jour
  64. et la lecture concurrente. Il n'est pas comparable aux bases de données en terme de
  65. vitesse de récupération de données.
  66. </para>
  67. <para>
  68. Donc c'est une bonne idée :
  69. </para>
  70. <itemizedlist>
  71. <listitem>
  72. <para>
  73. <emphasis>De ne pas</emphasis> utiliser l'index Lucene comme du stockage car cela
  74. réduirait les performance de récupération de résultat de recherche. Stocker
  75. uniquement les identifiants de documents (chemin de documents,
  76. <acronym>URL</acronym>s, identifiant unique de base données) et associer les
  77. données au sein de l'index. Ex. titre, annotation, categorie, information de langue,
  78. avatar. (Note : un champs peut être inclu dans l'indexation, mais pas stocké, ou
  79. stocké, mais pas indexé).
  80. </para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. D'écrire des fonctionalités qui peuvent reconstruire intégralement l'index, si il
  85. a été corrompu pour une raison ou pour une autre.
  86. </para>
  87. </listitem>
  88. </itemizedlist>
  89. <para>
  90. Les documents individuels dans l'index peuvent avoir des ensemble de champs totalement
  91. différents. Le même champ dans différents documents n'a pas besoin d'avoir les mêmes
  92. attributs. Ex. un champs peu être indexé pour l'un des documents mais sauté pour
  93. l'indexation d'un autre. Le même principe s'applique au stockage, à la segmentation,
  94. ou traitement de valeur de champ comme chaîne binaire.
  95. </para>
  96. </sect1>