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