Depuis le 17 janvier, www.theses.fr propose un nouveau périmètre de recherche : les personnes impliquées dans la recherche doctorale française (directeurs de thèse, auteurs de thèse et rapporteurs).
Pour mettre en place cette nouvelle fonctionnalité, l’ABES a dû résoudre plusieurs difficultés techniques.
En effet, theses.fr s’appuie sur SolR, un moteur de recherche proposant une API XML et JSON par HTTP. Les données exposées étant décrites par document (TEF), nous les avons naturellement indexées de cette manière. C’est-à-dire qu’une thèse (soutenue ou en préparation) correspond à un TEF et est indexée sous la forme d’un document SolR.
La description d’une thèse contient, entre autre, son auteur, son directeur de thèse, ses rapporteurs.
Comment arriver à rechercher sur ces personnes, alors que l’index est fait par document ?
Avec une base de données relationnelle, il aurait suffi de faire une jointure entre la table du « document » et la table des « personnes ».
Dans notre cas, il a fallu fabriquer une indexation dédiée à ce type de recherche.
Nous avons utilisé un SolR « personnes », destiné à indexer des personnes.
A chaque indexation d’un document thèse :
– un programme récupère les personnes liées (par leur numéro d’identifiant, le PPN de la notice d’autorité IdRef-Sudoc),
– les supprime éventuellement du SolR « personnes » (pour ne pas avoir de personnes sans thèse liée, dans le cas d’une mise à jour d’une thèse),
– puis pour chaque PPN trouvé, et pour chaque rôle possible, effectue une recherche dans le SolR « thèses » afin de trouver les thèses liées à ce PPN. Et ce sert de ces informations pour ajouter une fiche ainsi constituée au SolR « personnes ».
La recherche dans l’onglet « personnes » utilise le SolR « personnes » afin de trouver les fiches correspondant à tous les critères de recherche.
Pour chaque fiche de personne trouvée, le programme effectue une sous requête par rôle sur le SolR « thèses » afin de n’afficher que les thèses correspondant à au moins un des critères de recherche.
Exemple
La thèse http://www.theses.fr/2011TOU20094 a pour auteur Mehdi Ghouirgate, pour directeur Philippe Sénac, pour rapporteurs Pascal Buresi et Jean-Pierre Van Staëvel, et comme mot-clé al-andalus. Cette thèse correspond au document 2011TOU20094 dans le SolR « thèses »
Au moment de son insertion dans theses.fr, un document est créé dans le SolR « thèses » et quatre documents sont créés dans le SolR « personnes ».
Jean-Pierre Van Staëvel a été rapporteur d’une thèse, a été directeur de quelques thèses soutenues, et est actuellement directeur d’une dizaine de thèses en préparation.
Dans le SolR « personnes », le document SolR qui décrit Jean-Pierre Van Staëvel contient le fait qu’il est rapporteur de la thèse http://www.theses.fr/2011TOU20094 et qu’il est directeur notamment des thèses en préparation http://www.theses.fr/s33517 et http://www.theses.fr/s37444
Dans le SolR « thèses », le document 2011TOU20094 indique que cette thèse a pour mot clé al-andalus et les documents s33517 et s37444 ont le mot maroc dans les mots du titre des thèses en préparation.
Ainsi si vous faites une recherche sur maroc al-andalus dans l’onglet « personnes » vous avez notamment comme résultat Jean-Pierre Van Staëvel qualifié par une thèse soutenue dont il est rapporteur (2011TOU20094) et deux thèses en préparation dont il est directeur (s33517 et s37444).
L’onglet « personnes » de theses.fr consolide donc l’information présente dans les deux SolR.
A. Charot
Bonjour,
Merci pour votre blog très instructif sur la réalisation de theses.fr
En lisant cette entrée blog, je n’arrive pas à comprendre pourquoi vous avez pris le parti d’avoir deux solr plutôt que d’avoir des fields SolR additionnels pour gérer les noms des personnes impliquées dans les thèses (soit un seul field, soit au besoin un field pour les rapporteurs, un pour l’auteur, un pour le directeur etc).
Ha et si vous n’avez pas utilisé SolRJS ou Ajax Solr, c’est parce que ce n’était pas mûr lors de vos investigations, ou y-a-t’il d’autres raisons ?
Cordialement,
Cédric
Bonjour,
Merci de l’intérêt que vous portez à ce blog.
Nous n’avons pas trouvé d’autres solutions pour permettre le type de recherche voulu.
Dans notre solr principal (représentant des thèses), nous avons déjà les champs que vous proposez (auteur, rapporteur etc) mais cela ne permet pas d’avoir les thèses groupées par « personne » et portant sur plusieurs critères de recherche ;
plusieurs critères qui peuvent correspondre pour chacun à une thèse différente.
Imaginons une recherche sur « point virgule », la recherche voulue doit permettre de trouver les personnes ayant participé à une ou des thèses portant sur point ET virgule.
On pourra par exemple trouver Mr Dupont, qui a était directeur d’une thèse dont le sujet est « point » et qui a était rapporteur d’une autre thèse dont le titre contient « virgule ».
En utilisant seulement le solr principal on ne pourra trouver que les personnes dont au moins une thèse correspond aux 2 critères à la fois. Ou, si on utilise un OU les personnes dont au moins une thèse correspond à au moins un critère (mais pas forcément les 2).
Voilà j’espère que c’est un petit peu plus clair 😉 . Sinon n’hésitez pas à contacter pth at abes.fr si vous voulez d’avantages de détails.
Pour l’utilisation des librairies Ajax, nous n’avions pas besoin de requêtes asynchrones pour notre interface. Les technologies Javascript-Ajax sont intéressantes pour certains aspects (par exemple connaissez-vous http://www.calames.abes.fr ? qui utilise judicieusement les requêtes asynchrones afin d’ajouter au fil de l’utilisation d’avantage d’informations à une page de description de manuscrit) mais engendre également des problèmes de navigation (bouton back du navigateur), problèmes de compatibilités avec certains navigateurs (notamment IE), etc.
Nous avions au départ essayé des prototypes utilisant ces librairies javascript, mais ce qui nous a aussi freiné a été la volonté d’avoir des facettes utilisant le OU, ce qui rend les requêtes solr vraiment tordues, voir :
http://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters
Pour theses.fr nous avons choisi d’utiliser des JSP, Servlet et la librairie solrJ, les pages sont donc générées côté serveur.
Bien cordialement,
Aurélien Charot