24 janv. 2025, 17:03:32 cmoulin

Paramétrer un moteur de recherche avec affichage Liste et/ou carte avec SolR - Leaflet

Pour afficher une liste de ressources dans un site, sous forme de tableau, de liste ou de carte, il est possible d’utiliser les fonctionnalités avancées de SolR. Il faut donc indexer les ressources que l’on veut présenter en front-office de son site, pour ensuite pouvoir les publier sur une page de résultat de recherche. La première étape consiste à utiliser un serveur SolR, puis indexer les données.

Configurer SolR avec Lutece

Pour configurer un serveur SolR et l’utiliser par exemple pour de la cartographie, voici les étapes nécessaires :

Intégrer dans le pom.xml les plugins suivants :

Si vous voulez un serveur solr embarqué :

Configuration du properties

Il faut ensuite créer un fichier search-solr.properties qui devra se trouver dans WEB-INF/conf/override/plugins.

Dans ce fichier properties, il faut obligatoirement la propriété suivante :

solr.server.address=http://127.0.0.1:8080/nom_webapp/solrserver/solr

dans le cas d’un serveur solr embarqué.

Sinon

solr.server.address= url du serveur solr distant avec le nom du core, exemple : https://w91-r7-i1-app01-solr.apps.paris.mdp/solr/bp

D’autres propriétés peuvent être ajoutées :

  • daemon.solrindexer.interval : indique l’intervalle entre deux lancements de l’indexation solr, la valeur est indiquée en seconde, donc pour un lancement toutes les heures par exemple, mettre : 3600
  • daemon.solrindexer.onstartup=1 : pour que l’indexation solr se lance au démarrage de la webapp
  • solr.daemon.indexer.incremental=true : pour activer l’indexation incrémentale

Configuration dans forms

Créer un nouveau formulaire ou modifier un existant pour ajouter un champ de type géolocalisation pour avoir accès à la carte.

Dans le formulaire désiré, vérifier que dans “modifier les paramètres du formulaire”, onglet publication, les champs que l’on souhaite consulter dans la page de résultat SolR aient bien le champ publié coché.

Il faut ensuite créer un workflow qui permettra de passer le statut de la form response au statut publié. Pour cela créer une nouvelle action ainsi qu’une tâche dans le workflow qui passe le statut de non publié à publié. Ce workflow doit être rattaché au formulaire.

Ensuite créer des réponses au formulaire et exécuter l’action du workflow pour passer le statut de la form response au statut publié.

Une fois que les form responses sont bien au statut publié, l’indexation solr peut être lancée pour recueillir les champs dans solr. Vérifier dans la page Indexation Solr que le service SolrFormsResponseIndexer soit bien activé. Si c’est le cas, lancer l’indexation Solr.

Accès à la page de résultat solr FO

La page Front Office permettant d’afficher les résultats d’une recherche solr se trouve à l’adresse suivante :

/jsp/site/Portal.jsp?page=search-solr&items_per_page=100&sort_name=date&sort_order=asc&conf=default

Dans cet exemple, le paramètre items_per_page fait que les 100 premiers résultats seront affichés. Le paramètre sort_name indique que les résultats seront triés par date et dans l’ordre ascendant (sort_order). La configuration associée à cette page se trouve dans le paramètre conf=default. Le nom de la configuration peut être changé pour n’importe quel autre nom. Pour activer la carte sur cette page, il faut faire un script SQL avec les données suivantes :

insert into core_datastore values ('solr.app.conf.default.mapping','true');

insert into core_datastore values ('solr.app.conf.default.installed','true');

Dans ces deux INSERT, la configuration choisie est default, mais elle doit être raccord avec le nom choisi dans l’url :

/jsp/site/Portal.jsp?page=search-solr&items_per_page=100&sort_name=date&sort_order=asc&conf=nomdelaconf

Sur la gauche de la page se trouvent les différents filtres pour affiner les résultats. Au bas de la page se trouve la liste des résultats, ordonnée par le champ sort_name de l’url. Au milieu de la page se trouve la carte affichée avec les markers issues de Solr.

Cette page de résultat peut être personnalisée en modifiant le fichier solr_search_results.html du plugin solr et en le mettant dans WEB-INF/templates/skin/search/solr_search_results.html.