Development #40743
opengis : recherche textuelle sur l'ensemble des éléments textes
0%
Description
Dans la suite de #20535#note-9, on ajouterait à la définition des requêtes un attribut "propriétés pour la recherche" et on mettrait ces données dans une colonne dédiée. Ensuite on aurait un attribut ?q=whatever pour faire la recherche et retourner uniquement les points correspondant.
Fichiers
Révisions associées
Historique
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Fichier 0001-opengis-add-text-search-for-queries-40743.patch 0001-opengis-add-text-search-for-queries-40743.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Easy.
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Fichier 0001-opengis-add-text-search-for-queries-40743.patch 0001-opengis-add-text-search-for-queries-40743.patch ajouté
Frédéric Péters a écrit :
Enregistrer le texte sans les accents ?
Yep,
- features = features.filter(text__icontains=q) + features = features.filter(text__icontains=simplify(q)) ... - text = ' '.join(values) + text = simplify(' '.join(values))
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Je valide mais amélioration pour ici ou un autre ticket : découper q en mots pour que la recherche donne du résultat peu importe l'ordre des mots. (et/ou à un moment basculer sur la vraie recherche fulltext de postgresql).
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Fichier 0001-opengis-add-text-search-for-queries-40743.patch 0001-opengis-add-text-search-for-queries-40743.patch ajouté
- Statut changé de Solution validée à Solution proposée
Oui c'est vrai que ce genre de recherche qui marche mal dès qu'il y a plusieurs mots est un peu insupportable, je préfère corriger ça dès maintenant.
En utilisant la recherche postgres :
--- a/passerelle/apps/opengis/models.py +++ b/passerelle/apps/opengis/models.py if q: - features = features.filter(text__icontains=simplify(q)) + features = features.filter(text__search=simplify(q)) data = {
+ l'ajout dans INSTALLED_APPS de 'django.contrib.postgres' et un bout de test, ça marche tout à fait. Tant qu'à faire on pourrait aussi se passer de simplify en ajoutant __unaccent mais bon, comme ce champ n'est pas destiné à l'affichage peut-être bien que c'est mieux de faire comme ça niveau perf, dans le doute je laisse en l'état.
Je te laisse revalider ce petit changement.
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Pour la partie unaccent ça peut venir dans un second temps, il faudra juste penser à faire attention parce que l'usager db n'a pas nécessairement les permissions nécessaires pour créer l'extension postgres, du coup ça demande de bricoler genre https://git.entrouvert.org/combo.git/tree/combo/apps/search/migrations/0007_french_fts.py
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 401873e3f796b184f707fd80131bfa59b9c6f798 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Tue Apr 7 16:38:26 2020 +0200 opengis: add text search for queries (#40743)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
opengis: add text search for queries (#40743)