Moteur de recherche

Cet article explique comment mettre en place un moteur de recherche pour votre site. Cet article utilise les extensions indexed_search (fournie par défaut avec TYPO3) et  crawler pour l’indexation et l’extension  macina_searchbox pour le masque de recherche présent sur toutes les pages.

Au programme de cet article :

REMARQUE : Cet article ne détaille pas autant le fonctionnement et la mise en place du moteur de recherche qu’un article, plus récent, que j’ai créé en anglais. Je vous invite à prendre connaissance de l’article Indexed Search & Crawler - The missing manual.

Installation

L’extension crawler autorise la mise en place de cron jobs et permet ainsi de choisir quand le site doit être indexé. En effet, par défaut, indexed_search indexe les pages au fur et à mesure qu’elles sont visitées, ce qui n’est pas très efficace.

Commençons par installer ces deux extensions :

L’étape suivante est de configurer l’extension indexed_search. La copie d’écran suivante montre quelques uns des champs à configurer. Nous aurons besoin des outils :

  • pdftotext et pdfinfo (paquetage xpdf-utils sous Debian) pour indexer les fichiers PDF
  • unzip pour indexer le contenu des archives ZIP
  • catdoc pour indexer les documents MS Word
  • xlhtml pour indexer les feuilles de calcul MS Excel
  • ppthtml pour indexer les présentation MS PowerPoint
  • unrtf pour indexer les documents RTF

Les autres points de configuration importants sont de désactiver l’indexation des documents depuis le frontend puisque nous allons mettre en place un cron job, et de spécifier que les fichiers externes (PDF, …) doivent être indexés séparément des pages Web.

Configuration

Avant de mettre en place le cron job, nous allons configurer notre site pour qu’il puisse être indexé. Dans la partie Setup de notre template, rajoutons :

page.config.index_enable = 1
page.config.index_externals = 1

Ensuite, dans la partie pageTS de notre page d’accueil (respectivement la racine de notre site), ajoutons

tx_crawler.crawlerCfg.paramSets {
	tt_content = &L=[0-1]
	tt_content.procInstrFilter = tx_indexedsearch_reindex
		# if extension cachemgm is available too:
	# ... = tx_indexedsearch_reindex, tx_cachemgm_recache
	tt_content.baseUrl = http://www.domain.tld/
}

En mode Web > List, créons à la racine de notre site un nouvel enregistrement de type Indexing configuration. Choisissons le type page tree puis sélectionnons notre page racine.

La profondeur d’indexation (depth) peut être définie à 1 si toutes nos pages sont accessibles depuis la racine (ce qui est presque toujours le cas). Enregistrons la configuration et vérifions qu’elle est active (un point d’interrogation rouge sur l’icône de la configuration indique que la configuration est masquée (hidden) et donc qu’elle est inactive).

Cliquons maintenant sur Web > Info, sélectionnons la racine de notre site dans l’arbre des pages puis dans l’écran des informations, choisissons crawler dans la liste déroulante.

Vérifions que vous allons effectuer un site crawling sur tous les sous-niveaux (infinite), sélectionnons la processing instruction Re-indexing puis cliquons sur Update et Crawl URLs. Notre site va alors commencer à être indexé. Nous pouvons vérifier l’état en choisissant Indexed search dans la liste déroulante de l’écran des informations.

Nouvel utilisateur

Pour que l’extension crawler fonctionne, il faut créer dans Tools > User Admin un nouvel utilisateur nommé _cli_lowlevel. Le mot de passe n’importe pas et ses droits d’accès non plus.

Voilà ! Il ne reste plus qu’à créer le cron job :

* * * * * www-data   php /path/to/typo3/cli_dispatch.phpsh crawler

Masque de recherche

Commençons par créer une page qui contiendra le résultat de nos recherches. Dans les propriétés de la page, nous pouvons choisir de la masquer dans le menu étant donné que nous avons un masque de recherche présent sur toutes les pages. Rajoutons maintenant le plugin indexed_search comme élément de contenu :

Pour le masque de recherche proprement dit, nous pouvons installer l’extension  macina_searchbox de la même façon que nous avons installé les extensions pour l’indexation du contenu. Puis, dans notre templateTS, rajoutons le code nécessaire à l’incorporation du plugin :

plugin.tx_macinasearchbox_pi1 {
	pidSearchpage = 12
	templateFile = fileadmin/templates/search_template.html
}
 
lib.searchbox < plugin.tx_macinasearchbox_pi1

Le paramètre pidSearchpage correspond à la page qui contient le plugin indexed_search. Quant au paramètre templateFile, par défaut c’est le fichier EXT:macina_searchbox/pi1/template.htm qui est utilisé. Il suffit d’en créer une copie et de la modifier comme souhaité.

En savoir plus

Pour de plus amples informations, vous pouvez lire  la documentation de l’extension indexed_search.

Flattr