ecotaxa / ecotaxa_front

Front end of the EcoTaxa application
Other
6 stars 6 forks source link

Nouvelle syntaxe pour tous les filtres #183

Closed jiho closed 3 years ago

jiho commented 6 years ago

Filtres sur la gauche dans explore et classif page + filtre projet

Ex:

"point B 2000"

matches

"Point B Regent 2000" "Point blabla B 2000" "Zooscan point B 2000" "2000 Point b"

picheral commented 6 years ago

Taxonomy filter : documenter avec accès par "?" Nouvelle syntaxe appliquée uniquement au filtre "Projet". Sample basic : * traite comme % et pas case sensitive Sample advanced : pas case sensitive

picheral commented 6 years ago

voir #93

picheral commented 6 years ago

VALIDE

jiho commented 5 years ago

Non validé.

Spécifications

Les spécifications sont (en faisant le bilan des différentes issues):

Tests

Testé sur l'instance de test dédiée chez ovh.

Liste projets

imp*tri ou imp tri ne renvoient rien alors que devrait être identique à imp%tri

Filtre projet

(dans explore) idem ci-dessus

Filtre sample

(dans http://vps322510.ovh.net/prj/192) st 0 pas équivalent à st*0

Filtre instrument

pas d'autocomplétion visiblement.

Filtre annotator

c*pich pas équivalent à c pich pi*al ne retourne rien

Filtre taxo

La spécification "‘%’ and ‘’ can be used simultaneously (e.g. ‘ijkabc%xyz’ for searching a category whose name starts with ‘abc’ AND contains ‘xyz’ AND having a parent whose name start with ‘ijk’; or ‘%xyz*abc’ for searching a category whose name starts with ‘abc’ AND having a parent whose name contains ‘xyz’)" me semble d'une complexité inutile. De plus l'ordre est parent/enfant quand nous affichons enfant/parent, ce qui est contre intuitif. Je pense qu'il faut simplifier et se conformer aux spécifications ci-dessus en travaillant sur le nom tel qu'affiché = catégorie (parent) (qui devrait devenir plus simple cf #172).

part c i ou part*c*i devraient renvoyer

Partenskyella (Chlorarachnida)
Partnunia (Acari)
Parthenopea (Cirripedia)
Parthenicus juniperi
Parthenicus covilleae
part (Ctenaria ctenophora)
part (Cnidaria)

et part ct ou *part*ct devraient renvoyer

Triparticalcar arcticum
part (Ctenaria ctenophora)
part (Ctenophora)

Implémentation

Il me semble qu'il faut une fonction qui traduit une chaine de requête en requête SQL, avec ou sans wildcard au début, et qui l'applique partout.

foo bar -> %foo%bar% ou foo%bar% (quand pas de wildcard au début) foo*bar -> %foo%bar% ou foo%bar% *foo bar -> %foo%bar% (wildcard forcé au début) foo%bar -> foo%bar (pas de changement) foo%bar* -> foo%bar* (pas de changement = cherche un * explicite)

jiho commented 5 years ago

Implémentation de test en R, sur table taxo, pour reproductibilité et tests

library("ecotaxar")
library("stringr")

# get taxonomy
db <- src_ecotaxa()
t <- tbl(db, "taxonomy") %>% collect()
# build the display name, like on EcoTaxa (parent for not-species level)
t$parent <- taxo_name(t$parent_id, taxo=t)
t <- filter(t, !is.na(parent)) # parent is NA when parent is root, drop this for now
t$display <- ifelse(str_detect(t$name, " "), t$name, str_c(t$name, " (", t$parent, ")"))

# filter with automatic wilcard at end (but not at start)
filt <- function(query) {
  t$display[str_detect(str_to_lower(t$display), glob2rx(str_c(str_to_lower(query), "*")))]
}

filt("part*c*i")
filt("*part*ct")
picheral commented 5 years ago

A faire pour la release 1.6 en cours...

picheral commented 5 years ago

Reporté à 2.x et après discussion suivant ressources et priorités.

picheral commented 5 years ago

Le filtre TAXO de la page de classification n'a pas été refondu complètement (discussion LN cette semaine). Il faudrait vérifier à l'usage mais je pense que ce qui est implémenté maintenant avec les display_names est OK. Voir le "i" qui détaille le fonctionnement. Il faudrait implémenter ce même filtre partout où il y a du mapping de taxo (Automatic classif...)

picheral commented 5 years ago

LN indique que ce même filtre existe partout sauf dans la classif manuelle où les cinq dernières catégories utilisées sont placées au dessus dans la liste.

Le "i" n'a pas été mis à jour dans la page classif manuelle... voir ci_dessous ! Il devrait être implémenté partout où il y a possibilité de faire le mapping par auto-completion.

L'usage du % n'est pour moi pas logique par rapport au . Pourquoi ne pas remplacer tel que spécifié par JO tout en conservant les recherches "exotiques" déjà implémentées : Recherche d'un taxon connaissant le début du nom mais sans connaitre ses parents : co%pe%da par copeda ou co pe da ? Même recherche sans connaitre le début du nom : %poda par poda ou poda ? Recherche en connaissant le début du nom d'un ou plusieurs ancêtre et le début du nom du taxon : %ruscopcal par calcoprus ou cal cop rus (tenir compte du fait que nous avons inversé la notation dans les display_names)

On ajoute (déjà fait par LN) : Recherche taxon (morpho) connaissant le début du nom de son ancêtre et du nom : he<chaet

grololo06 commented 4 years ago

Pas un bug selon le titre "nouvelle...". Et surtout cette issue est beaucoup trop longue. S'il reste des choses à faire merci d'entrer une autre issue plus synthétique.

grololo06 commented 3 years ago

Clarified (hopefully) in #592 and #593