Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amélioration "recherche par espèce" #532

Open
jpm-cbna opened this issue Apr 30, 2024 · 0 comments
Open

Amélioration "recherche par espèce" #532

jpm-cbna opened this issue Apr 30, 2024 · 0 comments
Assignees
Projects

Comments

@jpm-cbna
Copy link
Contributor

Le champ "Recherche par espèce" présent dans l'entête de l'Atlas permet de rechercher des noms de taxons par nom scientifique (retenu ou synonyme) et par nom vernaculaire. Il est cependant nécessaire de taper correctement les caractères accentués pour les noms vernaculaires.

Il serait utile de pouvoir taper un nom vernaculaire sans accent et que le nom accentué correspondant soit bien retourné.

Par ailleurs, il serait intéressant d'améliorer la vue matérialisée vm_search_taxon en y supprimant les champs inutilisés (nom_valide, lb_nom) et y ajoutant un champ de recherche (search_name) distinct de celui utilisé pour l'affichage (display_name).

Pour le champ contenant le texte utilisé pour l'affichage, nous proposons 3 possibilités où les noms scientifiques sont en italique et les noms retenus en gras :

  • nom vernaculaire = nom scientifique retenu auteur(s)
  • nom scientifique synonyme = nom scientifique retenu auteur(s)
  • nom scientifique retenu

Pour obtenir les noms scientifiques avec les noms latins en italique, nous n'utiliserons pas directement une balise HTML comme indiqué ci-dessus mais le champ nom_complet_html de TaxRef dans lequel on supprime le libellé de l'auteur. C'est réalisable avec la syntaxse SQL suivante REPLACE(nom_complet_html, lb_auteur, '').

Pour l'obtention des nom vernaculaires, nous utiliserons le champ nom_vern de TaxRef en séparant les noms vernaculaires par la chaien , . Nous éliminons également les noms vernaculaires identiques au nom scientifique sans auteur (lb_nom).

La liste affichée reste triée en fonction du résultat de l'indice de similarité obtenu par la fonction SQL similarity().

La nouvelle vue matérialisé vm_search_taxon ressemblerait donc à ceci:

CREATE MATERIALIZED VIEW atlas.vm_search_taxon AS 
	WITH verna_names AS (
		SELECT DISTINCT
			cd_nom,
			lb_nom,
		    cd_ref,
		    STRING_TO_TABLE(nom_vern, ', ') AS nom_vern
		FROM atlas.vm_taxref
		WHERE nom_vern IS NOT NULL 
			AND cd_nom = cd_ref
			AND nom_vern <> lb_nom
	),
	names AS (
		-- Chosen scinames
		SELECT 
			cd_nom,
			cd_ref,
			lb_nom AS search_name,
		    concat('<b>', REPLACE(nom_complet_html, lb_auteur, ''), '</b> ', lb_auteur) AS display_name
		FROM atlas.vm_taxref
		WHERE cd_nom = cd_ref
		
		UNION
	
		-- Synonym scinames
		SELECT 
			t1.cd_nom,
			t1.cd_ref,
			t1.lb_nom AS search_name,
		    concat(REPLACE(t1.nom_complet_html, t1.lb_auteur, ''), ' =  <b> ', REPLACE(t2.nom_complet_html, t2.lb_auteur, ''), '</b> ', t2.lb_auteur) AS display_name
		FROM atlas.vm_taxref AS t1
			JOIN atlas.vm_taxref AS t2
				ON t1.cd_ref = t2.cd_nom
		WHERE t1.cd_nom <> t1.cd_ref
	
		UNION
	
		-- Vernacular names
		SELECT
			v.cd_nom,
		    v.cd_ref,
		    v.nom_vern AS search_name,
		    concat(v.nom_vern, ' =  <b> ', REPLACE(t.nom_complet_html, t.lb_auteur, ''), '</b> ', t.lb_auteur) AS display_name
		FROM verna_names AS v
			JOIN atlas.vm_taxref AS t
				ON t.cd_nom = v.cd_ref
		WHERE v.nom_vern <> v.lb_nom
	)
	SELECT row_number() OVER (ORDER BY n.cd_nom, n.cd_ref, n.search_name)::integer AS fid,
	  n.cd_nom,
	  n.cd_ref,
	  n.search_name,
	  n.display_name
	FROM atlas.vm_taxons AS t
		JOIN names AS n
			ON t.cd_ref = n.cd_ref ;

Au niveau de l'affichage, cela donne ceci:

Screenshot_20240430_180121
Screenshot_20240430_182508

@jpm-cbna jpm-cbna self-assigned this Apr 30, 2024
jpm-cbna added a commit that referenced this issue May 7, 2024
Merge branch 'feat/sinp' into feat/sinp-aura
jpm-cbna added a commit that referenced this issue May 7, 2024
Merge branch 'feat/sinp' into feat/sinp-paca
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
V1.5
Awaiting triage
Development

No branches or pull requests

1 participant