Skip to content
Snippets Groups Projects
Commit b8b61385 authored by RUIZ-FABO PABLO's avatar RUIZ-FABO PABLO
Browse files

corrections mineures énoncé TP

parent a0032637
No related merge requests found
......@@ -85,7 +85,7 @@ Nous allons créer un core nommé `presse` (ce nom d'index sera utilisé dans to
`./bin/solr create -c presse`
Le message *Created new core 'presse'* confirmera le succès. Il peut y avoir des warnings avant, que ne devraient pas avoir d'impact pour ce TP
Le message *Created new core 'presse'* confirmera le succès. Il peut y avoir des warnings avant, qui ne devraient pas avoir d'impact pour ce TP
Le core créé sera visible dans la console d'admin, on peut y accéder avec le menu dépliant *Core selector* à gauche.
......@@ -118,7 +118,7 @@ Le format du document est le suivant (voir exemple ci-dessous):
- Le champ `description` comporte le gros du contenu (il s'agit d'un corpus de nouvelles de presse)
- `pubname` contient le nom de la publication.
- `pdate` est la date de publication
- Tous les champs commençant par `enti_` : C'est des entités nommées (voir diaporama *Enrichissement de la recherche d'information par le TAL*).
- Tous les champs commençant par `enti_` : C'est des entités nommées (si vous voulez plus d'informations sur le concept d'entité nommée, voir diaporama *Enrichissement de la recherche d'information par le TAL*, sur moodle).
```xml
......@@ -191,9 +191,8 @@ Lors de l'indéxation, Solr a dynamiquement ajouté au schéma des champs selon
Nous pouvons nous attendre à trouver dans le schéma des champs comme `description`, `pubname`, `enti_person` et autres, cars ils étaient présents dans les documents a indexer. Solr infère le type pour le champ automatiquement.
Or, le schéma de base généré automatiquement par Solr peut être amélioré. Nous allons faire plusieurs modifications:
Or, le schéma de base généré automatiquement par Solr peut être amélioré. Nous allons faire la modification suivante:
- Changer la langue des champs textuels (par défaut en anglais) vers le français
- Afin d'alléger le schéma, définir un champ dynamique pour tous les types d'entités nommées au lieu d'avoir des champs séparés pour chaque entité
Voici les champs ajoutés par Solr au schéma:
......@@ -245,7 +244,7 @@ Nous allons changer les options linguistiques des champs pertinents, afin que la
<field name="title" type="text_fr"/>
```
Dans le cas des champs pour les entités, il peut y avoir plus d'une valeur par champ (plus d'un élément `enti_person`, `enti_location` etc par document). Il faudra ajouter l'attribut `multiValued="true"`.
Dans le cas des champs pour les entités, il peut y avoir plus d'une valeur par champ (plus d'un élément `enti_person`, `enti_location` etc par document). Il conviendra d'ajouter l'attribut `multiValued="true"`.
```xml
<field name="enti_date" type="text_fr" multiValued="true"/>
......@@ -256,11 +255,11 @@ Dans le cas des champs pour les entités, il peut y avoir plus d'une valeur par
<field name="enti_time" type="text_fr" multiValued="true"/>
```
Nous exploiterons les champs `enti_ ... _str`, en recherche exacte avec le type `strings`, pour afficher les entités dans l'interface, afin qu'elles soient montrés comme des facettes clicables pour filtrer les résultats. Autrement, on pourrait avoir un mauvais affichage, car l'entité tokénisée et racinisée s'afficherait, au lieu de l'entité exacte, p.ex. *États-Unis* pourrait s'afficher comme *État* et ensuite dans une facette séparée *Uni*.
Nous exploiterons les champs `enti_ ... _str`, en recherche exacte avec le type `strings`, pour afficher les entités dans l'interface, afin qu'elles soient montrés comme des facettes cliquables pour filtrer les résultats. Autrement, on pourrait avoir un mauvais affichage, car l'entité tokénisée et racinisée s'afficherait, au lieu de l'entité exacte, p.ex. *États-Unis* pourrait s'afficher comme *État* et ensuite dans une facette séparée *Uni*.
Au même temps, nous voulons pouvour faire des recherches inexactes dans les entités : Nous pourrions avoir *Emmanuel Macron* comme facette mais nous voulons que le terme soit trouvé quand on cherche *Macron* dans les entités. Les champs `enti_` de type `text_fr` permettront cette utilisation.
Note : Le type `strings` est déjà `multiValued` par défaut, donc il n'était pas nécessaire d'ajouter l'attribut, contrairement aux champs en type `text_fr`.
Note : Le type `strings` est déjà `multiValued` par défaut, donc il n'était pas nécessaire d'ajouter l'attribut, contrairement aux champs en type `text_fr`, où il .
#### Recharger la configuration après modification <a name="reloadConfig"/>
......@@ -278,7 +277,7 @@ Nous allons effacer les contenus et réindexer.
Pour effacer les contenus:
- Activer l'option qui permettra de faire des requêtes pour effacer le contenu (il faut l'activer une fois par core):
- Activer l'option qui permettra de faire des requêtes `GET` pour effacer le contenu (il faut l'activer une fois par core):
```shell
curl -H 'Content-type:application/json' -d '{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming": true}, "set-property": {"requestDispatcher.requestParsers.enableStreamBody": true}}' http://localhost:8983/api/cores/presse/config
......@@ -306,7 +305,7 @@ curl "http://localhost:8983/solr/presse/update?commit=true"
## Faire une requête simple <a name="requeteSimple"/>
Maintenant l'index est prêt et le stemming pour le français s'applique.
Maintenant l'index est prêt à accueillir des documents en français ; le stemming pour le français s'applique.
Nous pouvons faire une requête qui montre que la configuration s'applique. On peut coller la requête `GET` suivante dans le navigateur :
......@@ -322,9 +321,9 @@ La syntaxe de la requête est comme suit :
Une description plus complète de la syntaxe des requêtes Solr était fournie dans le diaporama, disponible sur moodle, *03 - Introduction à la plate-forme de recherche Solr*, diapos 43-45.
Dans la réponse, il y a d'abord une entête, et après la réponse en tant que telle. Elle donne le nombre de documents trouvés (`numFound: 24`), la position dans la liste de documents trouvés où nous sommes (`start: 0`) et ensuite chaque document qui correspond à la requête.
Dans la réponse, il y a d'abord une entête, et, après, la réponse en tant que telle. Elle donne le nombre de documents trouvés (`numFound: 24`), la position dans la liste de documents trouvés où nous sommes (`start: 0`), et, ensuite, chaque document qui correspond à la requête.
Dans un navigateur web, le début de la réponse se voit comme dans l'image ci-dessous. (Si nous faisons la requête avec un autre outil permettant des requêtes `GET` comme `curl`on n'aura pas le formatage mais les données retournées par Solr seront les mêmes).
Dans un navigateur web, le début de la réponse se voit comme dans l'image ci-dessous. (Si nous faisons la requête avec un autre outil permettant des requêtes `GET` comme `curl`on n'aura pas le formatage, mais les données retournées par Solr seront les mêmes).
<img src="images/debut-response-json.png" alt="début response json" width="800"/>
......@@ -335,19 +334,19 @@ En appelant le gestionnaire de requête `browse` plutôt que `select` depuis un
## Gestion de la recherche : `solrconfig.xml` <a name="gestionRecherche"/>
La configuration ci-dessus peut être améliorée dans plusieurs aspects:
- Par exemple, dans l'interface graphique, pour la requête précédente, il nous a fallu spécifier le champ (`description`) où le terme devait être cherché, ce qui n'est pas pratique. Il est plus pratique de définir un **champ de recherche par défaut** et ne spécifier les champs qu'en cas d'exception.
- Dans l'affichage HTML, nous ne voyons pas les **facettes**, alors qu'elle seraient peut-être intéressantes pour filtrer les résultats
- Dans l'affichage HTML, le terme recherché n'est pas mis en **surbrillance** dans les résultats de recherche, alors ce que serait plus convivial pour les utilisateurs.trices
- Dans l'interface graphique, pour la requête précédente, il nous a fallu spécifier le champ (`description`) où le terme devait être cherché, ce qui n'est pas pratique. Il est plus pratique de définir un **champ de recherche par défaut** et de ne spécifier les champs qu'en cas d'exception.
- Dans l'affichage HTML, nous ne voyons pas les **facettes**, alors qu'elles seraient intéressantes pour filtrer les résultats
- Dans l'affichage HTML, le terme recherché n'est pas mis en **surbrillance** dans les résultats de recherche, alors que ce serait plus convivial pour les utilisateurs.trices
Tous ces éléments (le champ de recherche par défaut, l'ensemble de champs à retourner dans la réponse, les facettes à afficher, et la surbrillance des résultats), peuvent être gérés dans le fichier `solrconfig.xml`.
Dans ce fichier, plusieurs éléments `RequestHandler` ("gestionnaire de recherche") sont définis. Ils spécifient des options dans le sens évoqué.
Par défaut en Solr 8.3.0, qui est la version utilisée dans ce TP, le requestHandler défini pour l'affichage HTML est nommé browse, mais on peut améliorer sa définition.
Par défaut en Solr 8.3.0, qui est la version utilisée dans ce TP, le requestHandler défini pour l'affichage HTML est nommé `browse`, mais on peut améliorer sa définition.
Un `solrconfig.xml` avec les options déjà modifiées sur browse se trouve sur [GitLab](../config_solr/mdtal/solrconfig.xml)
Un `solrconfig.xml` avec les options déjà modifiées sur `browse` se trouve sur [GitLab](../config_solr/mdtal/solrconfig.xml)
La configuration est reproduite ci-dessous. Les commentaires XML décrivent le rôle de chaque élément de la configuration. Ils était par ailleurs expliqués dans le diaporama, disponible sur moodle, *03 - Introduction à la plate-forme de recherche Solr*, diapos 46-49.
La configuration est reproduite ci-dessous. Les commentaires XML décrivent le rôle de chaque élément de la configuration. Ils étaient par ailleurs expliqués dans le diaporama, disponible sur moodle, *03 - Introduction à la plate-forme de recherche Solr*, diapos 46-49.
```xml
......@@ -401,9 +400,9 @@ La configuration est reproduite ci-dessous. Les commentaires XML décrivent le r
Après remplacer la configuration minimale pour `browse` qui vient par défaut en Solr 8.3.0 par la configuration ci-dessus, et effectuer un `RELOAD` du core ([commande](#reloadConfig)), on voit que les résultats s'affichent d'une façon plus riche, et qu'il n'est plus nécessaire de spécifier le champ de recherche dans la requête. L'image ci-dessous montre le nouvel affichage.
- On voit que la requête est maintenant `cheval`, sans besoin de spécifier le champ (pas `description:cheval`)
- Les facettes qui ont été demandées dans la configuration (p. ex. `enti_location`, `enti_organization` sont maintenant visibles à gauche. À noter que, comme c'est des facettes, il s'agit de champs de recherche *exacte* (type `string` dans le schéma), dont les contenus s'affichent tel quel, sans racinisation
- L'expression recherchée (`cheval`) est mise en surbrillance.
- On voit également le terme `chevaux` au pluriel en surbrillance. Ceci se doit à ce que nous avons indexé le champ `description` (et autres, voir [ci-dessus](#configSchema)) comme étant du texte français, et le stemming pour le français s'applique correctement afin de trouver les documents contenant le mot au pluriel en cherchant le singulier et vice-versa
- Les facettes qui ont été demandées dans la configuration (p. ex. `enti_location_str`, `enti_organization_str` sont maintenant visibles à gauche. À noter que, comme c'est des facettes, il s'agit de champs de recherche *exacte* (type `string` dans le schéma), dont les contenus s'affichent tel quel, sans racinisation
- L'expression recherchée (*cheval*) est mise en surbrillance.
- On voit également le terme *chevaux* au pluriel en surbrillance. Ceci se doit à ce que nous avons indexé le champ `description` (et autres, voir [ci-dessus](#configSchema)) comme étant du texte français, et le stemming pour le français s'applique correctement afin de trouver les documents contenant le mot au pluriel en cherchant le singulier et vice-versa
![affichage HTML configuration complète](images/browse-modif-1.png "Browse mieux configuré")
......@@ -413,9 +412,9 @@ Après remplacer la configuration minimale pour `browse` qui vient par défaut e
Sur la base de la configuration créé, nous pouvons améliorer l'expérience de navigation à travers la modification de l'interface HTML. Par exemple, nous pouvons ajouter deux colonnes de facettes, comme dans l'image ci-dessous.
- La colonne de gauche contient les facettes provenant d'annotations obtenues par le Traitement automatique des langues (entités nommées).
- La colonne de droite contient des métadonnées qui étaient déjà fournies par les journaux d'où proviennent les articles : nom de la publication, date de publication.
- La colonne de droite contient des métadonnées qui étaient déjà fournies par les journaux d'où proviennent les articles (métadonnées éditoriales) : nom de la publication, date de publication.
- Cette configuration nous permet de filtrer les résultats pour cibler certaines informations vite. P. ex. nous cherchont le mot *migrants* et nous pourrions ensuite restreindre les résultats grâce aux facettes aux documents où le lieu géographique *Mexique* est mentionné provenant de publications qui partagent une orientation politique donnée (p. ex. des journaux de gauche vs. de droite)
- Cette configuration nous permet de filtrer les résultats pour cibler certaines informations rapidement. P. ex. nous cherchont le mot *migrants* et nous pourrions ensuite restreindre les résultats grâce aux facettes aux documents où le lieu géographique *Mexique* est mentionné provenant de publications qui partagent une orientation politique donnée (p. ex. des journaux de gauche vs. de droite)
![affichage HTML configuration finale](images/browse-modif-complete.png "Browse configuration finale")
......@@ -446,7 +445,7 @@ Comme décrit, l'emplacement des templates est à l'intérieur du dossier `conf`
<img src="images/core_dir_velocity_in_place.png" alt="arborescence d'un core avec templates velocity" width="250"/>
Les templates principales (et pertinents pour ce TP) sont les suivants:
Les templates principaux (et pertinents pour ce TP) sont les suivants:
- `browse.vm` : Template de base
- Contient le formulaire de requête
......@@ -474,7 +473,7 @@ Quelques commentaires sur les modifications effectuées (voir aussi les capture
- Dans `hit.vm` :
- Les champs à afficher ont été restreints avec un tableau les mentionnant (ligne 5)
- Un URL clicable pour le document a été ajouté (ligne 24, pas visible dans l'image)
- Un URL cliquable pour le document a été ajouté (ligne 24, pas visible dans l'image)
<img src="images/hit_modif.png" alt="Diff sur hit.vm entre velocity_original et velocity_modifie"/>
- Dans `facets.vm`:
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment