TYPO3 Solr - Afficher des résultats provenant de différentes plateformes

Voici un rapide tutoriel permettant de réaliser un moteur de recherche multi-sites, avec des sites provenant de plusieurs plateformes TYPO3 différentes.

Dans sa configuration initiale l'extension TYPO3 Solr ne permet pas d'afficher des résultats provenant de plateformes TYPO3 différentes. L'astuce sera donc ici de faire croire à Solr que tous nos sites se trouvent sur la même plateforme. 

La méthode

Dans un premier temps assurez-vous que tous les sites que vous souhaitez faire remonter dans vos résultats de recherche sont indexés dans le même index Solr. Je n'ai à ce jour pas trouvé de solution permettant l'affichage de résultats provenant de différents indexes. 

Pour afficher les résultats de recherche Solr se base sur deux choses : 

  • La configuration TypoScript 
  • Le siteHash du site

Configuration TypoScript

Dans un premier temps indiquez à Solr les sites que vous voulez voir remonter dans votre index avec la configuration suivante :

plugin.tx_solr.search.query.allowedSites = renan-gautier.fr, guillaumecaron.fr, www.le-codex.com

Attention à ne pas confondre avec l'option __all qui permet d'afficher tous les sites de la plateforme actuelle.

 

Le site hash

La configuration TypoScript ne suffit pas à faire remonter les résultats des différents sites. En effet, par mesure de sécurité Solr vérifie aussi que les sites cités font bien partie de la plateforme actuelle. Pour cela il se base sur le siteHash du site. Le siteHash de chaque site est généré à partir d'une clé de cryptage censée être unique à chaque site. Afin de faire remonter les résultats de nos différents sites nous allons donner à chacun d'entre eux la même clé de cryptage.

Attention, cette clé est normalement générée automatiquement par mesure de sécurité. Il est donc important de ne pas la donner à n'importe qui. 

La clé de cryptage de votre site se trouve dans le fichier LocalConfiguration.php de votre site (dossier votre_site/typo3conf) :

...
'SYS' => array(
	'encryptionKey' => 'XXXXXXXX'
)

Récupérez cette clé sur l'un de vos sites et remplacez là dans tous les autres sites que vous souhaitez indexer.

Une fois cette configuration effectuée, relancez l'indexation de chacun de vos sites, vous devriez maintenant voir apparaître les résultats de chacun d'entre eux dans votre moteur de recherche. 

Si vous avez un moteur de recherche par site, pensez à appliquer la configuration TypoScript sur chacun de vos sites.

Cette méthode permet non seulement d'afficher des résultats provenant de plateformes TYPO3 différentes, mais aussi de tout autre type de plateforme, moyennant une configuration du schéma Solr. Vous trouverez comme exemple le moteur de recherche de ce site, qui regroupe des articles provenant de plateformes TYPO3 comme guillaumecaron.frle-codex.com mais aussi d'une plateforme WordPress : cyril-wolfangel.com.

 

Note : Une autre méthode (que je n'ai pas encore pu tester) permet d'éviter l'étape peu sécurisée de la modification de la clé de cryptage. Celle-ci consiste à utiliser le patch suivant proposé il y a peu par Olivier Dobberkau, fondateur du projet TYPO3 Solr. 

 

J'espère que ce tutoriel pourra aider certaines personnes. N'hésitez pas à partager vos avis / expériences dans les commentaires.

commentaires générés par Disqus