Drupal
14/12/2021

Plus loin dans search API SolR pour Drupal - la rencontre de la racinisation et de la lemmatisation

image
A l'occasion de la configuration de search API de Drupal avec SolR, notre interlocuteur nous a sollicité avec une question intéressante sur le fonctionnement algorithmique de la recherche. Nous partageons ici le résultat de nos recherches.

La question

Nous avons identifié quelques incohérences dans les résultats donnés par la recherche avec Search API Solr, lors de la recette d'un projet d'envergure. L'équipe projet nous a sollicité pour comprendre l'affichage de certains résultats.

Exemple : En cherchant, dans la version anglaise du site, le terme "carbone", les résultats envoient un un article avec le terme "carbon". La même chose se répète en ercherchant "impacte" ou "vegetariane", puisque la page de résultats retourne des articles contenant les termes "impact" et "vegetarian".
En revanche, si nous effectuons une recherche sur le terme "usefule", les résultats ne proposent pas d'article avec le terme "useful". 

Il semble, par conséquent, que le "e" en fin de mot soir ignoré dans certains cas, et pas dans d'autres. Nous avons voulu comprendre pourquoi. 

Définitions

Le stemming (racinisation en français) vise à garder la racine du mot, c’est à dire le tronquer de toute déclinaison, accord (flexions) et dérivations. Quand il est fait automatiquement (en français et anglais), il consiste la plupart du temps à enlever une partie de la fin du terme, quitte à en enlever trop ou pas assez.

La lemmatisation, consiste à ramener un terme, quels que soient ses accords ou déclinaisons à sa forme la plus simple (pour le français infinitif/masculin-singulier).

Le fonctionnement de l'indexation SolR

Le module Search API Solr applique la methode "Stemming / Lemmatization" sur la recherche. Cela signifie qu'il effectue une recherche sur la racine du mot, puis, dans un second temps, lance la recherche. fait sur les mots ce que l'on 
En anglais, pour effectuer une recherche sur la racine du mot, il supprime les suffixes valides qui sont (-ful, -s, -fully, -e, -es, -tion, -ism, -ing, -ization, -ize, -ed, -ly, etc.)

Exemples : 

carbon -
Les résultats d'une recherche sur le mot "carbon" proposeront des réponses incluant les termes [carbonization, carboning, carbons, carbone, carbonful, carbones, carbonfully, carbonation, etc.]
Si nous effectuons la recherche avec carbone, les résulats seront corrects (suppression du "e" suffixe pour effectuer la recherche sur le mot "racine" (carbon)).

Limit -
Fonctionne et renvoie [limite, limits, limites, limitful, limitfully, limitation, limitism etc.]

Useful -
Dispose du suffixe "ful". C'est pourquoi vous ne pouvez pas ajouter le "e" à la fin et avoir un résultat valide.

Conserver une configuration enrichie

L'état de l'art de l'analyse de texte va bien au-delà de l'élimination des différences superficielles entre les termes pour résoudre des problèmes plus complexes tels que l'analyse syntaxique spécifique à la langue, le balisage d'une partie du discours et la lemmatisation. Solr dispose d'un cadre complet pour effectuer des tâches d'analyse de texte de base, telles que la suppression de mots très courants appelés mots "vides" et effectuer des tâches d'analyse plus complexes. Solr est livré avec des types de champs préconfigurés dans son exemple schema.xml. 

Assurer les montées en version de SolR -

Les notes de mises à niveau de SolR sont disponibles ici. L'approche classique consiste à effectuer la mise à niveau de chaque nœud Solr, un par un.

Étape 1 : Arrêtez Solr
Commencez par arrêter le nœud Solr que vous souhaitez mettre à niveau. 

Étape 2 : Installer Solr en tant que service
Veuillez suivre les instructions pour installer Solr en tant que service sur la documentation de mise en production de SolR. Utilisez le -n paramètre pour éviter le démarrage automatique de Solr par le script d'installation. Vous devez mettre à jour le fichier /etc/default/solr.in.sh.

Étape 3 : définir les remplacements de variables d'environnement
Ouvrez /etc/default/solr.in.sh avec un éditeur de texte et vérifiez que les variables suivantes sont correctement définies :

  • ZK_HOST=
  • SOLR_HOST=
  • SOLR_PORT=
  • SOLR_HOME=

Assurez-vous que l'utilisateur autorisé dispose des permissions sur le répertoire SOLR_HOME. 

Étape 4: Démarrez Solr
Vous êtes maintenant prêts à démarrer le nœud SolR à jour - sudo service solr start

Étape 5 : Exécutez le contrôle d'intégrité
Vous devez exécuter la commande Solr healthcheck pour toutes les collections hébergées avant de procéder à la mise à niveau du nœud suivant. 

Enfin, répétez les étapes 1 à 5 pour tous les nœuds.