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

Le lien vers la page du tag depuis les résultats de recherche ne contient pas le tag #6456

Closed
Rowin opened this issue Jan 25, 2023 · 4 comments
Labels
C-Search Concerne la recherche (et Typesense) S-BUG Corrige un problème

Comments

@Rowin
Copy link
Contributor

Rowin commented Jan 25, 2023

Description du bug

Le paramètre tag de l'URL du lien vers le tag d'un contenu dans la page de résultat de recherche n'est pas rempli

Comment reproduire ?

La liste des étapes qui permet de reproduire le bug :

  1. Aller sur la page d'accueil
  2. Effectuer une recherche sur un sujet (par exemple : "java")
  3. Dans les résultats de recherche, survoler le lien vers le tag d'un contenu (par exemple le tag "java ee")
  4. Le lien est de la forme : https://zestedesavoir.com/bibliotheque/?tag=. Le slug du tag est manquant

Comportement attendu

Le lien devrait être de la forme https://zestedesavoir.com/bibliotheque/?tag=slug avec slug le slug du tag recherché.

Informations techniques

  • OS: Windows 10
  • Navigateur: Chrome 109
  • Version/environnement de zds: production
@Rowin Rowin added the S-BUG Corrige un problème label Jan 25, 2023
@Rowin
Copy link
Contributor Author

Rowin commented Jan 25, 2023

J'ai commencé à regarder d'où ça provient, je veux bien le traiter !

@Rowin
Copy link
Contributor Author

Rowin commented Jan 26, 2023

J'ai trouvé l'origine du problème, mais je suis sceptique sur la manière de le résoudre.

L'origine du problème se situe dans le template searchv2/includes/publishedcontent.part.html :

{% if search_result.tags %}
    <ul class="content-tags" itemprop="keywords">
        {% for tag in search_result.tags|slice:":3" %}
            <li>
                {% if search_result.content_type == 'OPINION' %}
                    <a href="{% url 'opinion:list' %}?tag={{ tag.slug }}">{{ tag }}</a>
                {% else %}
                    <a href="{% url 'publication:list' %}?tag={{ tag.slug }}">{{ tag }}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endif %}

On tente d'accéder à tag.slug sauf qu'on ne pourra pas ici : les tags ne sont pas récupérés directement depuis l'objet mais depuis ce que nous a retourné ES. Actuellement, le mapping des tags dans les Topic est défini de cette manière :

es_mapping.field("tags", Text(boost=2.0))

et les données :

data["tags"] = [tag.title for tag in self.tags.all()]

Je vois plusieurs manières de résoudre le problème :

  1. Indexer un dictionnaire plutôt que la liste des tags, avec les title en clé et les slug en value, ce qui permettrait de garder la même interface qu'actuellement. Mais je ne sais pas comment faire le changement de la config d'ES pour cela ;
  2. Indexer une seconde list tags_slugs qui contiendrai les slugs. Ce qui impliquerai de boucler à la fois sur search_result.tags et search_result.tags_slug ce qui n'est pas possible de base dans le template donc passerai par la création d'un filtre dédié (un wrapper autour de zip probablement) ;
  3. Recalculer le slug sur place. On peut facilement appeler la fonction qui permet de calculer le slug, quitte à définir un filtre pour ça ou quitte à utiliser le filtre existant (slugify mais qui pourrait ne pas fonctionner exactement de la même manière que nous). Certes, ça fait recalculer une donnée déjà existante en base, mais ça n'est clairement pas un traitement très lourd.

@philippemilink
Copy link
Member

philippemilink commented Feb 19, 2023

Merci pour s'être penché sur le problème.

En effet, ce n'est pas simple. Comme solution (pas très propre), j'opterais pour la deuxième, ajouter une liste, mais plutôt directement une liste de tag.get_absolute_url() (comme c'est fait par exemple pour le forum auquel appartient un topic).

À noter que le système de recherche est en train d'être refait par des étudiants, donc je propose de laisser ce bug de côté, et juste y penser lors du développement du nouveau système de recherche.

Au passage, ça m'a fait remarquer qu'on n'affiche pas les tags des topics, chose qu'on pourrait faire (on le fait pour les contenus, pourquoi pas pour les topics ?).

@philippemilink philippemilink added the C-Search Concerne la recherche (et Typesense) label Apr 9, 2023
@philippemilink
Copy link
Member

À noter que le système de recherche est en train d'être refait par des étudiants, donc je propose de laisser ce bug de côté, et juste y penser lors du développement du nouveau système de recherche.

La PR en question #6475 a été fusionnée et ce bug a été corrigé ; je ferme.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Search Concerne la recherche (et Typesense) S-BUG Corrige un problème
Projects
Status: Clos
Development

No branches or pull requests

2 participants