1
- -- Taxons observés et de tous leurs synonymes (utilisés pour la recherche d'une espèce)
1
+ CREATE MATERIALIZED VIEW atlas .vm_search_taxon AS
2
+ WITH verna_names AS (
3
+ SELECT DISTINCT
4
+ cd_nom,
5
+ lb_nom,
6
+ cd_ref,
7
+ STRING_TO_TABLE(nom_vern, ' , ' ) AS nom_vern
8
+ FROM atlas .vm_taxref
9
+ WHERE nom_vern IS NOT NULL
10
+ AND cd_nom = cd_ref
11
+ AND nom_vern <> lb_nom
12
+ ),
13
+ names AS (
14
+ -- Chosen scinames
15
+ SELECT
16
+ cd_nom,
17
+ cd_ref,
18
+ lb_nom AS search_name,
19
+ CONCAT(' <b>' , REPLACE(nom_complet_html, lb_auteur, ' ' ), ' </b> ' , lb_auteur) AS display_name
20
+ FROM atlas .vm_taxref
21
+ WHERE cd_nom = cd_ref
2
22
3
- CREATE MATERIALIZED VIEW atlas .vm_search_taxon AS
4
- SELECT row_number() OVER (ORDER BY t .cd_nom ,t .cd_ref ,t .search_name )::integer AS fid,
5
- t .cd_nom ,
6
- t .cd_ref ,
7
- t .search_name ,
8
- t .nom_valide ,
9
- t .lb_nom
10
- FROM (
11
- SELECT t_1 .cd_nom ,
12
- t_1 .cd_ref ,
13
- concat(t_1 .lb_nom , ' = <i> ' , t_1 .nom_valide , ' </i>' ) AS search_name,
14
- t_1 .nom_valide ,
15
- t_1 .lb_nom
16
- FROM atlas .vm_taxref t_1
23
+ UNION
17
24
18
- UNION
19
- SELECT t_1 .cd_nom ,
20
- t_1 .cd_ref ,
21
- concat(t_1 .nom_vern , ' = <i> ' , t_1 .nom_valide , ' </i>' ) AS search_name,
22
- t_1 .nom_valide ,
23
- t_1 .lb_nom
24
- FROM atlas .vm_taxref t_1
25
- WHERE t_1 .nom_vern IS NOT NULL AND t_1 .cd_nom = t_1 .cd_ref
26
- ) t
27
- JOIN atlas .vm_taxons taxons ON taxons .cd_ref = t .cd_ref ;
25
+ -- Synonym scinames
26
+ SELECT
27
+ t1 .cd_nom ,
28
+ t1 .cd_ref ,
29
+ t1 .lb_nom AS search_name,
30
+ 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
31
+ FROM atlas .vm_taxref AS t1
32
+ JOIN atlas .vm_taxref AS t2
33
+ ON t1 .cd_ref = t2 .cd_nom
34
+ WHERE t1 .cd_nom <> t1 .cd_ref
35
+
36
+ UNION
37
+
38
+ -- Vernacular names
39
+ SELECT
40
+ v .cd_nom ,
41
+ v .cd_ref ,
42
+ v .nom_vern AS search_name,
43
+ CONCAT(v .nom_vern , ' = <b> ' , REPLACE(t .nom_complet_html , t .lb_auteur , ' ' ), ' </b> ' , t .lb_auteur ) AS display_name
44
+ FROM verna_names AS v
45
+ JOIN atlas .vm_taxref AS t
46
+ ON t .cd_nom = v .cd_ref
47
+ WHERE v .nom_vern <> v .lb_nom
48
+ )
49
+ SELECT ROW_NUMBER() OVER (ORDER BY n .cd_nom , n .cd_ref , n .search_name )::integer AS fid,
50
+ n .cd_nom ,
51
+ n .cd_ref ,
52
+ n .search_name ,
53
+ n .display_name
54
+ FROM atlas .vm_taxons AS t
55
+ JOIN names AS n
56
+ ON t .cd_ref = n .cd_ref ;
28
57
29
58
CREATE UNIQUE INDEX ON atlas .vm_search_taxon (fid);
30
59
CREATE INDEX ON atlas .vm_search_taxon (cd_nom);
31
- create INDEX ON atlas .vm_search_taxon (cd_ref);
32
-
60
+ CREATE INDEX ON atlas .vm_search_taxon (cd_ref);
33
61
CREATE INDEX trgm_idx ON atlas .vm_search_taxon USING GIST (search_name gist_trgm_ops);
34
- CREATE UNIQUE INDEX ON atlas .vm_search_taxon (cd_nom, search_name);
62
+ CREATE UNIQUE INDEX ON atlas .vm_search_taxon (cd_nom, search_name);
0 commit comments