transition-bibliographique / poc-fne

Preuve de concept basée sur Wikibase pour le "Fichier National d'Entités" (Abes/BNF). Projet réalisé en 2019.
http://www.abes.fr/Autorites-et-referentiels/Projet-FNE-Fichier-National-d-Entites
4 stars 1 forks source link

La recherche dans Wikibase #213

Closed gotnc closed 4 years ago

gotnc commented 5 years ago

Ce ticket permet de synthétiser en un seul l’ensemble des tickets qui ont trait à la recherche (et à l’indexation). En amont du rapport final qui devra donner un avis spécifique sur chacune de ces fonctionnalités, l’objet du présent ticket est de fournir des orientations de plus haut niveau sur ce qu’il conviendrait de faire pour répondre aux besoins spécifiques du POC sur cette question.

L’avis portera sur les points suivants

Le ticket est considéré clos lorsque les tickets #215 #214 #216 ont été eux-mêmes clos et que les éléments de réponse ont été amenés en commentaire.


Types d'opérations illustrées par des exemples :

Recherche simple

Exemple : je recherche “Jean-Jacques Rousseau” J’obtiens : la liste de toutes les entités qui contiennent la chaîne exacte “Jean-Jacques Rousseau”, aussi toutes les entités qui contiennent les mots “Jean-Jacques” et “Rousseau” séparément mais pas celles qui contiennent “ean-jacques rouss”

Recherche avancée

  1. Je souhaite effectuer une/des recherche(s) au sein d’un sous-ensemble prédéfini, donc ayant appliqué préalablement un/des filtre(s) à l’ensemble de la base. Exemple : je cherche “Rita Mitsouko” (le groupe musical) dans le sous-ensemble “Collectivités” du FNE, j’active donc préalablement le filtre “Type d’entité” qui s’appuie sur le Référentiel Types d’entités, et je choisis “Collectivités” dans la liste des types proposés. Ensuite je formule ma requête : Le cas échéant, je cherche :

    • dans les champs portant sur le Nom de l’entité (formes préférentielles et formes alternatives)
    • par la chaîne de caractères (chaîne “rita mitsouko” en entier, ou chaîne de caractères tronquée à droite). J’obtiens :
    • soit précisément une seule réponse, l’entité que je cherche “Rita Mitsouko” si elle est unique dans le FNE,
    • soit la liste de tous les “Rita Mitsouko” dans le FNE qui remplissent mes critères de recherche ci-dessus. Nota: Pour constituer mon sous-ensemble initial dans lequel j’effectue ensuite mes recherches je peux d'emblée appliquer plusieurs filtres. Par exemple, je peux activer le filtre “Type d’entité” mais aussi celui du “Type d’activité” (associé à un référentiel, où un des types serait “groupe musical”) et ensuite je formule ma requête.
  2. Je souhaite effectuer une première recherche dans l’ensemble de la base (peu importe le type de la requête, simple ou avancée où l’on peut combiner des critères et jouer les opérateurs booléens, etc.). J’affine le résultat de cette requête en appliquant des filtres/facettes. Exemple : je fais une recherche simple “rêveries du promeneur solitaire” (recherche simple type plein texte). A la liste des réponses, j’applique les filtres:

    • Type de l’oeuvre (associé à un référentiel où un des types serait “oeuvre textuelle”)
    • Auteur de l’oeuvre (qui s’appuie sur l’index des entités Personnes ayant des liens de type “auteur de” avec les entités Oeuvres et qui me propose la liste des noms des auteurs des oeuvres contenant “rêveries du promeneur solitaire” parmi lesquels je trouve “Rousseau, Jean-Jacques (1712-1778)”, que je choisis). J’obtiens l’entité correspondant à l’oeuvre de Jean-Jacques Rousseau.
  3. Je souhaite trier (classer) la liste des résultats d’une recherche selon des critères choisis. Exemple : je cherche dans la base toutes les collectivités qui correspondent aux critères :

    • type “Enseignement supérieur et recherche universitaire” (issu d’un référentiel de types de collectivités)
    • dans la composition du nom (nom préférentiel et formes alternatives du nom) desquelles il y a le mot “Sorbonne”. J’obtiens la liste d’un ensemble de collectivités que je trie par date de fondation (la date de fondation (création) est une des informations).
  4. J’opère une sélection dans une liste de résultats. Exemple : dans le résultat de la recherche décrite dans l’exemple ci-dessus (Sorbonne), j’effectue une sélection, par exemple, en cochant les entités que je souhaite ensuite examiner en détail, les traiter, etc.

Navigation dans un index Exemple : dans le sous-ensemble “Personnes” des entités de la base, j’effectue une recherche par index par la chaîne de caractères "hugo, v" (=> chaîne exacte de caractères "hugo virgule espace v" où "hugo" représente le début du champ Nom (préférentiel ou alternatif). Il est également sous-entendu qu’une troncature à droite s’opère à la lettre terminale de la chaîne "v") La réponse est un positionnement d’une réponse ou d’un ensemble de réponses pertinentes dans la liste totale des Noms de toutes les entités Personnes de la base (sans exclusion), dans un classement alphabétique pur et qui débutent par la chaîne de caractères " hugo virgule espace v". Voir la partie en italiques de la liste des réponses dans l’exemple ci-dessous : … Hugo, Thomas Johannes Hugo, Ulrich Hugo, V. Hugo, Valentine (1887-1968) Hugo, Victor Hugo, Victor (19..-….; chanteur) Hugo, Victor (1802-1885) Hugo, Victor (fils) Hugo, Victor-Marie (1802-1885) Voir : Hugo, Victor (1802-1885) Hugo, Vittor (1802-1885) Voir : Hugo, Victor (1802-1885) Hugo, Vittorio(1802-1885) Voir : Hugo, Victor (1802-1885) Hugo, W. B Hugo, Wayne (1964-….) … Dans cet index je peux naviguer vers le haut, comme vers le bas (signalé dans l’exemple ci-dessus par les points de suspension en haut et en bas de la liste des noms).

maxlath commented 5 years ago

recherches simple

le champ de recherche en haut à droite de toutes les pages Exemple sur Wikidata : recherche simple de "Jean Jacques Rousseau"

recherche avancée

la recherche par mot et la recherche exacte ont chacune un champ dédié dans la page de recherche une fois l'extension AdvancedSearch installée

Exemple sur Wikidata : recherche avec les mots "rita" et "mitsouko"

La recherche par sous-ensemble est possible grâce à l'extension WikibaseCirrusSearch

Exemple sur Wikidata : "Rita Mitsouko haswbstatement:P31=Q215380"

dans les champs portant sur le Nom de l’entité De la même manière, on peut construire une requête sur les textes des déclarations, par exemple sur la propriété "Titre de l'oeuvre" (P18) :

recherche par facette

non-implémenté à notre connaissance dans Wikibase ou ses extensions, des pistes d'implémentation seront proposées dans le rapport final

la possibilité de trier un résultat de recherche

non-implémenté à notre connaissance dans Wikibase ou ses extensions, des pistes d'implémentation seront proposées dans le rapport final

La possibilité pour l'administrateur de l'application d'intervenir sur le paramétrage de la pertinence des résultats en fonction des besoins métiers

voir commentaire sur #87

La possibilité de naviguer dans un index

à voir si une requête SPARQL, possiblement caché derrière une interface graphique à développer, pourrait faire l'affaire. Exemple :

gotnc commented 5 years ago

Pour la recherche simple (sans wikibase cirrrussearch), @maxlath elle s'effectue bien uniquement sur les labels / alias de l'entité uniquement ? Donc pas de recherche plein texte telle que décrite dans le ticket initial, si ?

maxlath commented 5 years ago

@gotnc après une bonne plongé dans le code de Wikibase, il semble que le champ de recherche en haut des pages envoie ses requêtes à l'API wbsearchentities, laquelle fait une requête SQL pour chercher les entités dont les termes (label, description, aliases) dans la langue de l'utilisateur commence par le texte entrée. Pas de recherche plein texte donc.