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 : 3600daemon.solrindexer.onstartup=1
: pour que l’indexation solr se lance au démarrage de la webappsolr.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
.