La recherche « Déplacer vers le sujet existant » échoue silencieusement alors que la recherche du site fonctionne toujours

Bonjour,

Je rencontre un problème avec la modale « Déplacer vers un sujet existant » (cela fonctionnait auparavant sur mon site, il semble donc s’agir d’une régression) :

  • La saisie dans Rechercher un sujet n’affine pas les résultats
  • Les requêtes réseau retournent 200 avec les paramètres corrects
  • Aucune erreur JS dans la console du navigateur
  • La recherche /search sur l’ensemble du site fonctionne comme prévu
  • Le problème persiste après des reconstructions

Exemple de requête effectuée :
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular

La liste de sélection semble rester un ensemble statique de sujets et ne change pas lorsque le term (terme) est modifié.


Après un débogage côté client, j’ai d’abord soupçonné que cela pourrait être causé par le fait que pg_trgm n’était pas activé dans Postgres, mais je voulais le confirmer avant de continuer.

J’ai exécuté les commandes suivantes :

./launcher enter app
rails c
ActiveRecord::Base.connection.execute(
  "SELECT extname FROM pg_extension WHERE extname = 'pg_trgm';"
).to_a

Ce diagnostic serait valable si la commande retournait :

[]

Cependant, elle a retourné à la place :

[{"extname"=>"pg_trgm"}]

Donc pg_trgm est activé, et cela ne semble pas être la cause première.


J’ai donc l’intention d’exécuter la commande suivante :

./launcher enter app
rake search:reindex

Ceci pourrait être pertinent car une catégorie particulière de mon forum contient un très grand nombre de sujets.


Ce qui est déroutant, c’est que :

  • Discourse continue de fonctionner normalement par ailleurs
  • La recherche complète /search fonctionne comme prévu
  • L’autocomplétion du déplacement de sujet se dégrade silencieusement au lieu d’afficher un avertissement

Dans le cadre du débogage, j’ai également activé le paramètre search prefer recent posts et rechargé le navigateur. Cela n’a eu aucun effet sur le comportement - la recherche « Déplacer vers un sujet existant » n’affine toujours pas les résultats lorsque je tape.

Étant donné que ce paramètre n’affecte que la recherche complète /search et non le point de terminaison du sélecteur de sujet, cela semble cohérent avec le fait que le problème est spécifique à /search/query plutôt qu’à la performance générale de la recherche.


Avant d’exécuter rake search:reindex, je voulais vérifier la logique :

Le sélecteur de déplacement de sujet utilise /search/query avec search_for_id=true, qui s’appuie plus directement sur les recherches indexées que le point de terminaison /search complet. Un index de recherche partiellement obsolète ou incohérent pourrait donc affecter le sélecteur tandis que la recherche complète semble toujours fonctionner.

Étant donné que :

  • le point de terminaison est appelé,
  • les réponses retournent 200,
  • pg_trgm est activé,
  • et la bascule de search prefer recent posts n’a aucun effet,

Un rake search:reindex complet semble être la prochaine étape logique pour écarter une incohérence de l’index. Par ailleurs, l’absence de tout avertissement ou retour d’information rend cela particulièrement déroutant du point de vue de l’expérience utilisateur administrateur.

1 « J'aime »

Cette recherche n’a jamais été fiable d’après mon expérience. Par exemple, il y a aussi ce rapport : Topic can't be found when searching for a topic (verbatim) when moving a post.
Habituellement, j’entre l’ID du sujet et j’utilise la recherche du site pour le trouver.

1 « J'aime »

Merci, c’est un contexte utile, et le rapport lié semble très similaire.

Ce qui est étrange dans mon cas, c’est que cela se comportait comme « non réactif » lorsque j’ai rédigé le message initial : /search/query était appelé avec term=Eve Park, etc. (réponses 200), mais la liste de sélection restait statique et ne s’affinait pas du tout.

Depuis, je peux reproduire le comportement de « recherche réactive » prévu (comme montré dans mon enregistrement en mode sans échec) côte à côte avec une autre fenêtre de navigateur.

Je n’ai rien changé sur le serveur au-delà de ce que j’ai décrit dans le message initial, donc ma suspicion actuelle est que j’ai initialement rencontré soit :

  • un problème d’état côté client (ressources mises en cache / différence de rafraîchissement forcé / interaction avec un composant de thème), ou
  • un cas limite de requête où certains termes ne renvoient pas comme prévu (correspondance exacte / ponctuation / mots vides / ordre), similaire au rapport « la recherche par correspondance exacte ne trouve pas le sujet » que vous avez lié.

Ensuite, je vais comparer la réponse JSON réelle de /search/query entre le cas « non réactif » et le cas « réactif » (même terme), et je relancerai également le mode sans échec avec/sans thèmes pour voir si cela est corrélé.

Si quelqu’un connaît les règles de correspondance exactes utilisées par le sélecteur de déplacement de sujet (par rapport à /search complet) ou en quoi elles diffèrent, ce serait super utile - j’essaie de déterminer s’il s’agit d’une limitation/cas limite connu ou d’une régression.