Vue d'ensembleIntroductionZend_Search_Lucene est un moteur de recherche de contenus principalement textuels écrit entièrement en PHP 5. Comme il stocke ses index sur le système de fichiers et qu'il ne requiert pas de base de données, il peut offrir des fonctionnalités de recherche à presque n'importe quel site écrit en PHP. Zend_Search_Lucene dispose des caractéristiques suivantes :
Objet "Document" et "Field"Zend_Search_Lucene travaille avec des documents comme objets de base pour l'indexation. Un document est divisé en champs possédant un nom et du contenu dans lequel on pourra chercher. Un document est représenté par la classe Zend_Search_Lucene_Document. Les objets de cette classe contiennent des instances de Zend_Search_Lucene_Field qui représentent les champs du document. Il est important de noter que n'importe quelle information peut être ajoutée à l'index. Des informations propres à l'application ou des métadonnées peuvent être stockées dans le document, puis récupérées durant la recherche. Il est de la responsabilité de votre application de gérer l'indexation. Cela signifie que les données peuvent être indexées depuis n'importe quelle source accessible par votre application. Par exemple, elles peuvent provenir du système de fichier, d'une base de données, d'un formulaire HTML, etc. La classe Zend_Search_Lucene_Field fournit plusieurs méthodes statiques pour créer des champs avec différentes caractéristiques :
Chacune de ces méthodes (à l'exception de Zend_Search_Lucene_Field::Binary()) possède un paramètre optionnel $encoding servant à spécifier l'encodage de la chaîne entrée. L'encodage peut différer par document, voire par champ au sein d'un même document :
Si le paramètre d'encodage est omis, la locale courante est alors utilisée pour le déterminer à l'exécution. Par exemple :
Les champs sont toujours stockés et retournés depuis l'index en UTF-8. Toute conversion requise vers UTF-8 est effectuée automatiquement. Les analyseurs de texte (voir plus bas) peuvent également convertir du texte vers d'autres encodages. Actuellement, l'analyseur par défaut convertit le texte au format "ASCII/TRANSLIT". Soyez prudent, cependant; cette conversion peut déprendre de la locale. Le nom des champs est défini par vous dans la méthode addField(). Java Lucene utilise le champ "contents" comme champ de recherche par défaut. Zend_Search_Lucene cherche par défaut dans tous les champs. Cela dit, ce comportement est configurable. Consultez le chapitre "Champ de recherche par défaut" pour plus de détails. Comprendre les types de champs
Documents HTMLZend_Search_Lucene offre une fonctionnalité d'analyse HTML. Les documents peuvent être créés directement à d'un fichier ou d'une chaîne HTML :
La classe Zend_Search_Lucene_Document_Html utilise les méthodes DOMDocument::loadHTML() et DOMDocument::loadHTMLFile() pour analyser la source HTML, ainsi il n'est pas nécessaire que le HTML soit bien formé ou au format XHTML. Par contre, ces méthodes prennent en compte l'encodage spécifié dans la balise méta "http-equiv". La classe Zend_Search_Lucene_Document_Html reconnaît le titre d'une page HTML, son corps ("body"), ainsi que les métadonnées de son entête. Le champ "title" correspond au contenu de la balise /html/head/title. Il est stocké dans l'index, "tokenizé" et disponible pour la recherche. Le champ "body" correspond au contenu de la balise "body" du fichier ou de la chaîne HTML. Il ne prend pas en compte les scripts, les commentaires ou les attributs. Les méthodes loadHTML() et loadHTMLFile() de la classe Zend_Search_Lucene_Document_Html possèdent également un deuxième argument optionnel. Si sa valeur est true, le body sera alors stocké dans l'index et pourra être retourné dans les résultats de recherche. Par défaut, le body est "tokenizé", indexé, mais pas stocké. The third parameter of loadHTML() and loadHTMLFile() methods optionally specifies source HTML document encoding. It's used if encoding is not specified using Content-type HTTP-EQUIV meta tag. Les autres métadonnées génèrent des champs additionnels dans le document. Le champ "name" prend sa valeur dans l'attribut "name" de la métadonnées. Le champ "value" prend sa valeur dans l'attribut "content" de la métadonnées. Ces deux champs sont "tokenizés", indexés et stockés. Ainsi les documents peuvent être cherchés à travers leurs métadonnées (p. ex. par mots-clés). Les documents analysés peuvent être enrichis par le programmeur avec d'autres champs :
Les liens des documents ne sont pas inclus dans le document généré, mais ils peuvent être récupérés avec les méthodes Zend_Search_Lucene_Document_Html::getLinks() et Zend_Search_Lucene_Document_Html::getHeaderLinks() :
A partir de Zend Framework 1.6, il est également possible d'exclure les balises
"link" dont l'attribut La méthode Zend_Search_Lucene_Document_Html::getExcludeNoFollowLinks() retourne la valeur courante du flag "Exclude nofollow links". Documents Word 2007Zend_Search_Lucene offre une fonctionnalité d'analyse de documents Word 2007. On peut créer directement un document depuis un fichier Word 2007 :
La classe Zend_Search_Lucene_Document_Docx utilise la
classe La classe Zend_Search_Lucene_Document_Docx reconnaît les métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy), révision (revision), date de modification (modified), date de création (created). Le champ "filename" correspond au nom du fichier Word 2007. Le champ "title" correspond au titre du document. Le champ "subject" correspond au sujet du document. Le champ "creator" correspond à l'auteur du document. Le champ "keywords" contient les mots-clés du document. Le champ "description" correspond à la description du document. Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document. Le champ "revision" correspond au numéro actuel de la version du document. Le champ "modified" contient la date de dernière modification du document. Le champ "created" contient la date de création du document. Le champ "body" contient le véritable contenu du document Word 2007. Il n'inclut que le texte normal. Les commentaires et révisions ne sont pas inclus. La méthode loadDocxFile() de la classe Zend_Search_Lucene_Document_Docx possède également un second argument optionnel. S'il est défini à TRUE, le champ "body" sera alors également stocké dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ "body" est "tokenizé" et indexé, mais pas stocké. Les documents parsés peuvent être étendus par le programmeur avec d'autres champs :
Document Powerpoint 2007Zend_Search_Lucene offre une fonctionnalité d'analyse de documents Powerpoint 2007. On peut créer directement un document depuis un fichier Powerpoint 2007 :
La classe Zend_Search_Lucene_Document_Pptx utilise la
classe La classe Zend_Search_Lucene_Document_Pptx reconnaît les métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy), révision (revision), date de modification (modified), date de création (created). Le champ "filename" correspond au nom du fichier Powerpoint 2007. Le champ "title" correspond au titre du document. Le champ "subject" correspond au sujet du document. Le champ "creator" correspond à l'auteur du document. Le champ "keywords" contient les mots-clés du document. Le champ "description" correspond à la description du document. Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document. Le champ "revision" correspond au numéro actuel de la version du document. Le champ "modified" contient la date de dernière modification du document. Le champ "created" contient la date de création du document. Le champ "body" contient le véritable contenu de toutes les slides, ainsi que les notes dans le document Powerpoint 2007. La méthode loadPptxFile() de la classe Zend_Search_Lucene_Document_Pptx possède également un second argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ "body" est "tokenizé" et indexé, mais pas stocké. Les documents analysés peuvent être étendus par le programmeur avec d'autres champs :
Documents Excel 2007Zend_Search_Lucene offre une fonctionnalité d'analyse de documents Excel 2007. On peut créer directement un document depuis un fichier Excel 2007 :
La classe Zend_Search_Lucene_Document_Xlsx utilise la
classe La classe Zend_Search_Lucene_Document_Xlsx reconnaît les métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy), révision (revision), date de modification (modified), date de création (created). Le champ "filename" correspond au nom du fichier Excel 2007. Le champ "title" correspond au titre du document. Le champ "subject" correspond au sujet du document. Le champ "creator" correspond à l'auteur du document. Le champ "keywords" contient les mots-clés du document. Le champ "description" correspond à la description du document. Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document. Le champ "revision" correspond au numéro actuel de la version du document. Le champ "modified" contient la date de dernière modification du document. Le champ "created" contient la date de création du document. Le champ "body" contient le véritable contenu de toutes les cellules de toutes les feuilles de calcul du document Excel 2007. La méthode loadXlsxFile() de la classe Zend_Search_Lucene_Document_Xlsx possède également un second argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ "body" est "tokenizé" et indexé, mais pas stocké. Les documents analysés peuvent être étendus par le programmeur avec d'autres champs :
|