---
# System prepended metadata

title: 'Lettres, moteur de recherche'

---

Lettres, moteur de recherche
===


- Le moteur de recherche doit permettre prioritairement d’accéder aux documents (plutôt qu’aux occurrences d’un motif de recherche plein texte). Il s’appuie sur les métadonnées attachées à chaque document. La recherche plein texte vient en complément : le concordancier est "secondaire".
- Souhait d’un formulaire par défaut à 4 critères (1), complété par d’autres critères (2).


## (1) Formulaire par défaut

### Objectif

Il s’agit de la boîte de recherche qui doit être toujours accessible. 

Objectif : lister tous les documents mentionnant une/des personne(s) **ET/OU** un/des lieu(x) **ET/OU** contenant une expression, pour une période définie.


**Exemples de requêtes :**

- Lister les lettres en lien avec `Henri IV`
- Lister les lettres en lien avec `Henri IV` ET `Catherine de Médicis`
- Lister les lettres en lien avec `Senlis`
- Lister les lettres en lien avec `Senlis` et `Lille`
- Lister les lettres en lien avec `Henri IV` ET `Lille`
- Lister les lettres en lien avec `Henri IV` ET `Catherine de Médicis` ET `Senlis` ET `Lille`
- Lister les lettres datées (expédiées) à partir de `1562`
- Lister les lettres datées (expédiées) jusqu’à `1593`
- Lister les lettres datées (expédiées) entre `1562` et `1593`
- Lister les lettres datées (expédiées) entre `1562` et `1593`, en lien avec `Henri IV`
- Lister les lettres datées (expédiées) entre `1562` et `1593`, en lien avec `Henri IV` ET `Catherine de Médicis` ET `Senlis` ET `Lille`
- Lister les lettres dont la transcription contient le terme `réformés?`
- Lister les lettres dont la transcription contient le terme `réformés?`, en lien avec `Catherine de Médicis`
- Lister les lettres dont la transcription contient le terme `réformés?`, entre `1572` et `1573`, en lien avec `Catherine de Médicis` ET `Gaspard de Coligny` ET `Paris` ET `Blois`


**Filtres :**

NB. On ne prend PAS en charge l’opérateur 'OU' ; la combinatoire est difficile à appréhender avec autant de filtres. "Lister les lettres en lien avec Henri IV ET Catherine de Médicis" : la collection des lettres où il est question des 2 personnages (et non pas de l’un OU de l’autre).

Il s’agit de filtres : on réduit le nombre de résultats (logique d’entonnoir).


### Champs

1. Personne
2. Date de lieu
3. Date de temps
4. *Content*


#### 1. Personne

*Input* avec autocomplétion pour sélectionner une personne décrite en base, quel que soit son statut : expéditeur (`sender`), destinataire (`recipient`) ou sujet (`inlined`).

On doit pouvoir sélectionner plusieurs personnes successivement.

La sélection active est affichée sous la forme d’un tag-filtre activé.


Remarques / questions :

- Dans le volet de recherche avancée, la sélection se retrouve réexprimée avec l’activation de 3 filtres, pour la même personne : expéditeur, destinataire, sujet
- Par défaut, permettre la sélection de plusieurs personnes ?
- Exemple de sélecteur : [https://vuejsexamples.com/nova-4-filter-component-based-on-the-headless-ui-combobox-component/](https://vuejsexamples.com/nova-4-filter-component-based-on-the-headless-ui-combobox-component/)


#### 2. Date de lieu

*Input* avec autocomplétion pour sélectionner une ville décrite en base, quel que soit son statut : lieu d’expédition (`location-date-from`), lieu de réception (`location-date-to`) ou sujet (`inlined`).

On doit pouvoir sélectionner plusieurs villes successivement.


#### 3. Date de temps

Dans cette vue de base, un slider doit permettre de sélectionner l’intervalle entre 2 années.

Cf modèle ENCPOS (slider + 2 inputs pour spécifier une date).


#### 4. Content

*Input* pour saisir une chaîne de caractères (regex).



## (2) Formulaire étendu

### Objectif

Il s’agit :

- d’affiner certains filtres (par ex. pouvoir préciser une date au jour près) ;
- de fournir de nouveaux filtres.


**Exemples de requêtes :**

- Lister les lettres dont `Catherine de Medicis` est l’expéditrice d’`avril 1572`
- Lister les lettres dont la transcription contient le terme `réformés?` et cite `Gaspard de Coligny` entre `1572` et `1573`
- Lister les lettres dont la transcription contient le terme `réformés?` et mentionne `Gaspard de Coligny` en date du `14 avril 1572` expédiées depuis `Blois`.
- Lister les lettres dont la transcription contient le terme `réformés?` et le paratexte éditorial (notes et analyse) contient le terme `protestant`.
- Lister les lettres dont la transcription mentionne `Gaspard de Coligny` et dont `Catherine de Médicis` est la destinataire.
- Lister les lettres dont un témoin est conservé à la `BnF`.
- Lister les lettres dont la transcription mentionne `Gaspard de Coligny`, dont `Catherine de Médicis` est la destinataire en `1572` et dont un témoin est conservé à la `BnF`.
- Lister les lettres dont la transcription mentionne `Gaspard de Coligny`, dont `Catherine de Médicis` est la destinataire en `1572` en `allemand`.
- Lister les lettres dont un témoin est conservé à la `BnF` dans le volume coté `Fr. 3205`.


### Champs

1. Personne
	1. Expéditeur
	2. Destinataire
	3. Sujet
2. Date de lieu
	1. lieu d’expédition
	2. lieu de réception
	3. sujet
3. Date de temps
4. *Content*
	1. Transcription
	2. Note
	3. Titre ?
	4. Analyse ?
5. Langue du document
6. Institution de conservation
	1. 	+ cote


#### Personne

*Input* avec autocomplétion pour sélectionner une personne décrite en base **SELON** son statut : expéditeur (`sender`), destinataire (`recipient`) ou sujet (`inlined`).

On doit pouvoir sélectionner plusieurs personnes successivement.

La sélection active est affichée sous la forme d’un tag-filtre activé.


#### Date de lieu

*Input* avec autocomplétion pour sélectionner une ville décrite en base **SELON** son statut : lieu d’expédition (`location-date-from`), lieu de réception (`location-date-to`) ou sujet (`inlined`).

On doit pouvoir sélectionner plusieurs villes successivement.


#### Date de temps

Dans cette vue de base, un slider doit permettre de sélectionner l’intervalle entre 2 dates exprimées au jour près.

Cf modèle déployé dans la recherche avancée de l’application en développement.


#### *Content*

*Input* pour saisir une chaîne de caractères (regex).

Pouvoir activer la recherche floue (ex. du DicoTopo pour le réglage de la *fuzziness*).


#### Langue du document

Sélecteur pour la/les langue(s) de la lettre (`document_has_language.language_id`).


#### Institution de conservation

Sélectionner une institution de conservation (sélection d’une valeur de `institution.name`).

Pouvoir saisir une cote (recherche plein texte dans `witness.classification_mark`)




## Visualisation des résultats

- Liste simple (comme version actuellement déployée enrichies de l’expéditeur et du destinataire)
- Pouvoir déplier l’analyse
- Pouvoir en cas de recherche *Content* afficher les occurrences (modèles ENCPOS)
- TODO. Spécifier les filtres à afficher pour affiner la réponse (cf EMLO)
- TODO. Imaginer une vue cartographique (3 types de lieu…)
- TODO. Imaginer pour chaque personne le graphe de ses correspondants (rebond depuis un tag vers une notice d’autorité ?)


## Fonctionnalités

- conserver dans la session le résultat de la dernière recherche (recherche courante)
- fournir un lien pour chaque recherche
- export des résultats ? => une liste ? quel formatage ?
- pouvoir rechercher des lettres selon un ark Gallica ? Lister toutes les lettres contenues dans un document Gallica identifié par son ark ?

NB. OP écarte l’idée de proposer un filtre par (sous-)collection


## Problèmes

### mise en cohérence des formulaires (1) et (2)

Exemple du statut des personnes : par défaut (1), on sélectionne une personne quel que soit sont statut. Dans la vue de résultats, ce filtre peut être réexprimé sous la forme de 3 filtres : par ex. le tag sélectionné `Catherine de Médicis` sera affiché 3 fois, sous les 3 catégories (Expéditeur, Destinataire et Sujet) ; possiblement déselectionnable…

Du coup, un résultat affiché pourra ne plus correspondre à la requête formulée dans le formulaire par défaut.

Bref, on bascule facilement du formualaire (1) au formulaire (2), mais le chemin inverse pose problème.

**Point à discuter.**

**Vue 1**

|Filtre||
|------|---|
|Personne|`Catherine de Médicis` `Gaspard de Coligny`|
|Lieu|`Blois` `Senlis`|
|Date|`1572`-`1575`|
|Contenu|réformés?|


**Vue 2**

|Filtre||
|------|---|
|Expéditeur|`Catherine de Médicis`|
|Destinataire||
|Personne citée|`Gaspard de Coligny`|
|Ville d’expédition|`Blois`|
|Ville de destination|`Senlis`|
|Ville citée||
|Date|`1572-04-14`-`1572-07-14`|
|Contenu|fuzzy_search("réformés?", 0.8)|
