La ricerca "Sposta all'argomento esistente" fallisce silenziosamente mentre la ricerca del sito funziona ancora

Ciao,

Sto riscontrando un problema con la modale “Sposta in argomento esistente” (in precedenza funzionava sul mio sito, quindi sembra essere una regressione):

  • La digitazione in Cerca un argomento non affina i risultati
  • Le richieste di rete restituiscono 200 con i parametri corretti
  • Nessun errore JS nella console del browser
  • La /search dell’intero sito funziona come previsto
  • Il problema è persistito dopo le ricostruzioni

Richiesta di esempio effettuata:
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular

La lista di selezione sembra rimanere un insieme statico di argomenti e non cambia al variare del term.


Dopo il debug lato client, inizialmente ho sospettato che ciò potesse essere causato dal fatto che pg_trgm non fosse abilitato in Postgres, ma volevo confermarlo prima di procedere.

Ho eseguito i seguenti comandi:

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

Questa diagnosi sarebbe valida se il comando restituisse:

[]

Tuttavia, invece ha restituito:

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

Quindi pg_trgm è abilitato, e questo non sembra essere la causa principale.


Intendo quindi eseguire il seguente comando:

./launcher enter app
rake search:reindex

Questo potrebbe essere rilevante perché una particolare categoria del mio forum ha un numero molto elevato di argomenti.


Ciò che confonde è che:

  • Discourse continua a funzionare normalmente
  • La /search completa funziona come previsto
  • L’autocomplete per lo spostamento degli argomenti degrada silenziosamente invece di avvisare

Come parte del debug, ho anche abilitato l’impostazione search prefer recent posts e ricaricato il browser. Ciò non ha avuto alcun effetto sul comportamento: la ricerca di “Sposta in argomento esistente” ancora non affina i risultati mentre digito.

Dato che tale impostazione influisce solo sulla /search completa e non sull’endpoint di selezione dell’argomento, ciò è coerente con il fatto che il problema sia specifico di /search/query piuttosto che delle prestazioni generali della ricerca.


Prima di eseguire rake search:reindex, volevo verificare la logica:

Il selettore di spostamento argomenti utilizza /search/query con search_for_id=true, che si basa più direttamente sulle ricerche nell’indice rispetto all’endpoint /search completo. Un indice di ricerca parzialmente obsoleto o incoerente potrebbe quindi influire sul selettore mentre la ricerca completa sembra ancora funzionare.

Dato che:

  • l’endpoint viene chiamato,
  • le risposte restituiscono 200,
  • pg_trgm è abilitato,
  • e l’attivazione di search prefer recent posts non ha effetto,

Un rake search:reindex completo sembra essere il passo logico successivo per escludere l’incoerenza dell’indice. Separato da ciò, la mancanza di qualsiasi avviso o feedback rende questo aspetto particolarmente confuso dal punto di vista dell’UX amministrativa.

1 Mi Piace

Quella ricerca non è mai stata affidabile nella mia esperienza. Ad esempio, c’è anche questo report: Topic can't be found when searching for a topic (verbatim) when moving a post.
Di solito inserisco l’ID del topic e uso la ricerca del sito per trovarlo.

1 Mi Piace

Grazie: questo è un contesto utile e il report collegato sembra molto simile.

Ciò che è strano nel mio caso è che si è comportato come “non responsivo” quando ho scritto l’OP: /search/query veniva chiamato con term=Eve Park ecc. (risposte 200), ma l’elenco di selezione è rimasto statico e non si è affatto affinato.

Da allora, riesco a riprodurre il comportamento di “ricerca reattiva” previsto (come mostrato nella mia registrazione in Modalità Provvisoria) affiancato a un’altra finestra del browser.

Non ho apportato modifiche al server oltre a quanto descritto nell’OP, quindi il mio sospetto attuale è di aver inizialmente riscontrato:

  • un problema di stato lato client (asset memorizzati nella cache / differenza di aggiornamento forzato / interazione con componenti del tema), oppure
  • un caso limite di query in cui alcuni termini non restituiscono risultati come previsto (corrispondenza esatta / punteggiatura / parole vuote / ordinamento), simile al report “la ricerca di spostamento per corrispondenza esatta non trova l’argomento” che hai collegato.

Successivamente confronterò la risposta JSON effettiva da /search/query tra il caso “non responsivo” e il caso “reattivo” (stesso termine), e rieseguirò anche la Modalità Provvisoria con/senza temi per vedere se c’è una correlazione.

Se qualcuno conosce le regole di corrispondenza esatte utilizzate dal selettore di spostamento argomento (rispetto alla ricerca completa /search) o in cosa differiscono, sarebbe di grande aiuto: sto cercando di capire se si tratta di una limitazione/caso limite noto o di una regressione.