lucene-queries.xml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.lucene.queries">
  5. <title>Requêtes supportées</title>
  6. <para>
  7. <classname>Zend_Search_Lucene</classname> et Lucene Java supportent un langage de requête
  8. puissant.
  9. Il permet de rechercher des termes individuels, des phrases, des ensembles de termes ;
  10. en utilisant des jokers ou des recherches floues ; en combinant des requêtes à l'aide
  11. d'opérateurs booléens et ainsi de suite.
  12. </para>
  13. <para>
  14. Une description détaillée du langage de requête peut être trouvé dans la documentation du
  15. composant <link
  16. linkend="zend.search.lucene.query-language">
  17. Zend_Search_Lucene</link>.
  18. </para>
  19. <para>
  20. Ci-dessous, des exemples de quelques requêtes types communes et de stratégies.
  21. </para>
  22. <example id="learning.lucene.queries.keyword">
  23. <title>Effectuer une requête pour un mot seul</title>
  24. <programlisting language="text"><![CDATA[
  25. hello
  26. ]]></programlisting>
  27. <para>
  28. Recherche le mot "hello" à travers les champs de tous les documents.
  29. </para>
  30. </example>
  31. <note>
  32. <title>Champ de recherche par défaut</title>
  33. <para>
  34. Note importante ! Lucene Java recherche uniquement dans les champs de "contenu" par
  35. défaut, mais <classname>Zend_Search_Lucene</classname> recherche à travers
  36. <emphasis>tous</emphasis> les champs. Ce comportement peut être modifié en utilisant
  37. la méthode <methodname>Zend_Search_Lucene::setDefaultSearchField($fieldName)</methodname>.
  38. </para>
  39. </note>
  40. <example id="learning.lucene.queries.multiple-words">
  41. <title>Effectuer une recherche de mots multiples</title>
  42. <programlisting language="text"><![CDATA[
  43. hello dolly
  44. ]]></programlisting>
  45. <para>
  46. Recherche deux mots. Les deux mots sont facultatifs, au moins l'un des deux doit être
  47. présent dans le résultat
  48. </para>
  49. </example>
  50. <example id="learning.lucene.queries.required-words">
  51. <title>Mots requis dans une requête</title>
  52. <programlisting language="text"><![CDATA[
  53. +hello dolly
  54. ]]></programlisting>
  55. <para>
  56. Recherche deux mots ; "hello" est requis, "dolly" est facultatif.
  57. </para>
  58. </example>
  59. <example id="learning.lucene.queries.prohibited-words">
  60. <title>Interdire des mots dans les documents recherchés</title>
  61. <programlisting language="text"><![CDATA[
  62. +hello -dolly
  63. ]]></programlisting>
  64. <para>
  65. Recherche avec deux mots ; "hello" est requis, 'dolly' est interdit. En d'autres termes,
  66. si le document contient "hello", mais contient aussi le mot "dolly", il ne sera pas
  67. retourné dans l'ensemble de résultats.
  68. </para>
  69. </example>
  70. <example id="learning.lucene.queries.phrases">
  71. <title>Rechercher des phrases</title>
  72. <programlisting language="text"><![CDATA[
  73. "hello dolly"
  74. ]]></programlisting>
  75. <para>
  76. Recherche de la phrases "hello dolly" ; un document correspond uniquement si la chaine
  77. exacte est présente.
  78. </para>
  79. </example>
  80. <example id="learning.lucene.queries.fields">
  81. <title>Effectuer des recherches dans des champs en particulier</title>
  82. <programlisting language="text"><![CDATA[
  83. title:"The Right Way" AND text:go
  84. ]]></programlisting>
  85. <para>
  86. Recherche la phrase "The Right Way" au sein du champ <property>title</property> et le mot
  87. "go" dans la propriété <property>text</property>.
  88. </para>
  89. </example>
  90. <example id="learning.lucene.queries.fields-and-document">
  91. <title>Effectuer des recherches dans des champs en particulier aussi bien que dans le
  92. document complet</title>
  93. <programlisting language="text"><![CDATA[
  94. title:"The Right Way" AND go
  95. ]]></programlisting>
  96. <para>
  97. Recherche la phrase "The Right Way" dans la propriété <property>title</property> et le
  98. mot "go" dans tous les champs du document.
  99. </para>
  100. </example>
  101. <example id="learning.lucene.queries.fields-and-document-alt">
  102. <title>Effectuer des recherches dans des champs en particulier aussi bien que dans le
  103. document complet (Alternatif)</title>
  104. <programlisting language="text"><![CDATA[
  105. title:Do it right
  106. ]]></programlisting>
  107. <para>
  108. Recherche le mot "Do" dans la propriété <property>title</property> et les mots "it" and
  109. "right" dans tous les champs ; si l'un d'entre eux correspond, le document correspondra
  110. à un résultat de recherche.
  111. </para>
  112. </example>
  113. <example id="learning.lucene.queries.wildcard-question">
  114. <title>Faire des requêtes avec le joker "?"</title>
  115. <programlisting language="text"><![CDATA[
  116. te?t
  117. ]]></programlisting>
  118. <para>
  119. Recherche les mots correspondants au motif "te?t", où "?" est n'importe quel caractère
  120. unique.
  121. </para>
  122. </example>
  123. <example id="learning.lucene.queries.wildcard-asterisk">
  124. <title>Faire des requêtes avec le joker "*"</title>
  125. <programlisting language="text"><![CDATA[
  126. test*
  127. ]]></programlisting>
  128. <para>
  129. Recherche les mots correspondants au motif "test*", où "*" est n'importe quelle séquence
  130. de 0 caractère ou plus.
  131. </para>
  132. </example>
  133. <example id="learning.lucene.queries.range-inclusive">
  134. <title>Rechercher une gamme inclusive de termes</title>
  135. <programlisting language="text"><![CDATA[
  136. mod_date:[20020101 TO 20030101]
  137. ]]></programlisting>
  138. <para>
  139. Recherche la gamme de termes (inclusif).
  140. </para>
  141. </example>
  142. <example id="learning.lucene.queries.range-exclusive">
  143. <title>Rechercher une gamme exclusive de termes</title>
  144. <programlisting language="text"><![CDATA[
  145. title:{Aida to Carmen}
  146. ]]></programlisting>
  147. <para>
  148. Recherche la gamme de termes (exculsif).
  149. </para>
  150. </example>
  151. <example id="learning.lucene.queries.fuzzy">
  152. <title>Recherches floues</title>
  153. <programlisting language="text"><![CDATA[
  154. roam~
  155. ]]></programlisting>
  156. <para>
  157. Recherche foue pour le mot "roam".
  158. </para>
  159. </example>
  160. <example id="learning.lucene.queries.boolean">
  161. <title>Recherches booléennes</title>
  162. <programlisting language="text"><![CDATA[
  163. (framework OR library) AND php
  164. ]]></programlisting>
  165. <para>
  166. Requête booléenne.
  167. </para>
  168. </example>
  169. <para>
  170. Toutes les requêtes supportées peuvent être construites via
  171. l'<link linkend="zend.search.lucene.query-api">API de construction de requêtes</link> de
  172. <classname>Zend_Search_Lucene</classname>. De plus l'analyse et la construction de requêtes
  173. peuvent être combinées :
  174. </para>
  175. <example id="learning.lucene.queries.combining">
  176. <title>Combinaison d'analyse et de construction de requêtes</title>
  177. <programlisting language="php"><![CDATA[
  178. $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
  179. $query = new Zend_Search_Lucene_Search_Query_Boolean();
  180. $query->addSubquery($userQuery, true /* required */);
  181. $query->addSubquery($constructedQuery, true /* required */);
  182. ]]></programlisting>
  183. </example>
  184. </sect1>