lucene-searching.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.lucene.searching">
  5. <title>Recherche</title>
  6. <para>
  7. La recherche s'effectue en utilisant la méthode <methodname>find()</methodname>&#160;:
  8. </para>
  9. <example id="learning.lucene.searching.search-example">
  10. <title>Recherche à travers l'index</title>
  11. <programlisting language="php"><![CDATA[
  12. $hits = $index->find($query);
  13. foreach ($hits as $hit) {
  14. printf("%d %f %s\n", $hit->id, $hit->score, $hit->title);
  15. }
  16. ]]></programlisting>
  17. </example>
  18. <para>
  19. Cet exemple montre l'utilisation de deux propriétés particulières des résultats de
  20. recherche&#160;-&#160;<property>id</property> et <property>score</property>.
  21. </para>
  22. <para>
  23. <property>id</property> est un identifiant interne de document utilisé dans un index Lucene.
  24. Il peut être utilisé pour un certains nombre d'opérations, tels que la suppression d'un
  25. document de l'index&#160;:
  26. </para>
  27. <example id="learning.lucene.searching.delete-example">
  28. <title>Suppression d'un document indexé</title>
  29. <programlisting language="php"><![CDATA[
  30. $index->delete($id);
  31. ]]></programlisting>
  32. </example>
  33. <para>
  34. Ou récupération d'un document à partir de l'index&#160;:
  35. </para>
  36. <example id="learning.lucene.searching.retrieve-example">
  37. <title>Récupération d'un document indexé</title>
  38. <programlisting language="php"><![CDATA[
  39. $doc = $index->getDocument($id);
  40. ]]></programlisting>
  41. </example>
  42. <note id="learning.lucene.searching.identifiers">
  43. <title>Identifiant interne de document</title>
  44. <para>
  45. Note importante&#160;! Les identifiants de documents internes peuvent changer suite à
  46. une optimisation de l'index ou au processus d'auto-optimisation, mais il ne sera jamais
  47. changé pendant l'exécution d'un script à moins que ne soient appellées les méthodes
  48. <methodname>addDocument()</methodname> (ce qui peut impliquer une procédure
  49. d'auto-optimisation) ou <methodname>optimize()</methodname>.
  50. </para>
  51. </note>
  52. <para>
  53. Le champ <property>score</property> est un score de résultat. Les résultats de recherche
  54. sont triés par score (meilleurs résultats en premier).
  55. </para>
  56. <para>
  57. Il est aussi possible de trier l'ensemble de résultats en fonction d'une valeur de champ
  58. spécifique. Voir la <link
  59. linkend="zend.search.lucene.searching.sorting"> documentation
  60. <classname>Zend_Search_Lucene</classname></link> pour plus de détails sur cette
  61. possibilité.
  62. </para>
  63. <para>
  64. Cette exemple montre aussi la possibilité d'accéder à des champs stockés (ex&#160;:
  65. <command>$hit->title</command>). Les champs de documents stockés sont chargés lors du
  66. premier accès à l'une des propriété du résultat autre que
  67. <property>id</property> ou <property>score</property>, et la valeur du champ correspondant
  68. est retournée.
  69. </para>
  70. <para>
  71. Ceci cause une ambiguïté car les documents ont leurs propres champs <property>id</property>
  72. ou <property>score</property> par conséquence, il n'est pas recommendé d'utiliser ces noms
  73. de champs dans les documents stockés. Cependant, ils peuvent être accédé via la
  74. méthode&#160;: <methodname>getDocument()</methodname>
  75. </para>
  76. <example id="learning.lucene.searching.id-score-fields">
  77. <title>Accéder aux champs "id" et "score" original du documents</title>
  78. <programlisting language="php"><![CDATA[
  79. $id = $hit->getDocument()->id;
  80. $score = $hit->getDocument()->score;
  81. ]]></programlisting>
  82. </example>
  83. </sect1>