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)|